عبور از وضعیت در اقدامات ایمیل

شما می‌توانید هنگام ارسال اقدامات ایمیل برای تنظیم مجدد رمز عبور یا تأیید ایمیل کاربر، وضعیت را از طریق یک URL ادامه ارسال کنید. این به کاربر این امکان را می‌دهد که پس از اتمام اقدام، به برنامه بازگردانده شود. علاوه بر این، می‌توانید مشخص کنید که آیا لینک اقدام ایمیل را مستقیماً از یک برنامه تلفن همراه هنگام نصب آن به جای یک صفحه وب مدیریت کنید یا خیر.

این می‌تواند در سناریوهای رایج زیر بسیار مفید باشد:

  • کاربری که در حال حاضر وارد سیستم نشده است، ممکن است سعی در دسترسی به محتوایی داشته باشد که نیاز به ورود به سیستم دارد. با این حال، ممکن است کاربر رمز عبور خود را فراموش کرده باشد و بنابراین جریان تنظیم مجدد رمز عبور را فعال کند. در پایان این جریان، کاربر انتظار دارد به بخشی از برنامه که سعی در دسترسی به آن داشته است، بازگردد.

  • یک برنامه ممکن است فقط به حساب‌های تأیید شده دسترسی ارائه دهد. برای مثال، یک برنامه خبرنامه ممکن است از کاربر بخواهد قبل از عضویت، ایمیل خود را تأیید کند. کاربر باید مراحل تأیید ایمیل را طی کند و انتظار داشته باشد که برای تکمیل عضویت خود به برنامه بازگردانده شود.

  • به طور کلی، وقتی کاربری فرآیند بازنشانی رمز عبور یا تأیید ایمیل را در یک برنامه اپل آغاز می‌کند، انتظار دارد که این فرآیند در داخل برنامه تکمیل شود؛ قابلیت ارسال وضعیت از طریق continue URL این امر را ممکن می‌سازد.

قابلیت ارسال وضعیت از طریق یک URL ادامه‌دار، ویژگی قدرتمندی است که Firebase Auth ارائه می‌دهد و می‌تواند تجربه کاربری را به میزان قابل توجهی بهبود بخشد.

ارسال وضعیت یک URL ادامه‌دار در اکشن‌های ایمیل

برای ارسال ایمن یک URL ادامه‌دار، باید دامنه‌ی URL را به عنوان یک دامنه‌ی مجاز اضافه کنید:

  1. در کنسول Firebase ، به تب Security > Authentication > Settings بروید.

  2. در بخش دامنه‌های مجاز ، روی افزودن دامنه کلیک کنید و URL را اضافه کنید.

هنگام ارسال ایمیل تنظیم مجدد رمز عبور یا ایمیل تأیید، باید یک نمونه FIRActionCodeSettings ارائه شود. این رابط پارامترهای زیر را دریافت می‌کند:

سویفت

پارامتر نوع توضیحات
URL رشته

لینک (آدرس اینترنتی وضعیت/ادامه) را تنظیم می‌کند که در زمینه‌های مختلف معانی متفاوتی دارد:

  • وقتی لینک در ویجت‌های اکشن وب مدیریت می‌شود، این لینک عمیق در پارامتر کوئری continueUrl است.
  • وقتی لینک مستقیماً در برنامه مدیریت می‌شود، این پارامتر کوئری continueUrl در لینک عمیق لینک Hosting است.
iOSBundleID رشته شناسه بسته iOS را تنظیم می‌کند تا به Firebase Authentication کمک کند تا تعیین کند که آیا باید یک لینک فقط وب یا موبایل که روی دستگاه اپل باز می‌شود، ایجاد کند.
androidPackageName رشته نام بسته اندروید را تنظیم می‌کند تا به Firebase Authentication کمک کند تا تعیین کند که آیا باید یک لینک فقط وب یا موبایل ایجاد کند که در دستگاه اندروید باز شود.
handleCodeInApp بول اینکه آیا لینک اکشن ایمیل ابتدا در یک برنامه تلفن همراه یا یک لینک وب باز شود یا خیر. پیش‌فرض false است. وقتی روی true تنظیم شود، لینک کد اکشن به عنوان یک لینک جهانی یا لینک برنامه اندروید ارسال می‌شود و در صورت نصب توسط برنامه باز می‌شود. در حالت false، کد ابتدا به ویجت وب ارسال می‌شود و سپس در صورت نصب، در ادامه به برنامه هدایت می‌شود.
linkDomain رشته وقتی دامنه‌های لینک میزبانی سفارشی برای یک پروژه تعریف می‌شوند، مشخص کنید که کدام یک برای باز شدن لینک توسط یک برنامه تلفن همراه مشخص استفاده شود. در غیر این صورت، دامنه پیش‌فرض به طور خودکار انتخاب می‌شود (برای مثال، PROJECT_ID .firebaseapp.com ).
dynamicLinkDomain رشته منسوخ شده. این پارامتر را مشخص نکنید.

هدف-سی

پارامتر نوع توضیحات
URL رشته NS

لینک (آدرس اینترنتی وضعیت/ادامه) را تنظیم می‌کند که در زمینه‌های مختلف معانی متفاوتی دارد:

  • وقتی لینک در ویجت‌های اکشن وب مدیریت می‌شود، این لینک عمیق در پارامتر کوئری continueUrl است.
  • وقتی لینک مستقیماً در برنامه مدیریت می‌شود، این پارامتر کوئری continueUrl در لینک عمیق لینک Hosting است.
iOSBundleID رشته NS شناسه بسته iOS را تنظیم می‌کند تا به Firebase Authentication کمک کند تا تعیین کند که آیا باید یک لینک فقط وب یا موبایل ایجاد کند که در دستگاه اندروید یا اپل باز شود.
androidPackageName رشته NS نام بسته اندروید را تنظیم می‌کند تا به Firebase Authentication کمک کند تا تعیین کند که آیا باید یک لینک فقط وب یا موبایل ایجاد کند که روی دستگاه اندروید یا اپل باز شود.
handleCodeInApp بول اینکه آیا لینک اکشن ایمیل ابتدا در یک برنامه تلفن همراه یا یک لینک وب باز شود یا خیر. پیش‌فرض false است. وقتی روی true تنظیم شود، لینک کد اکشن به عنوان یک لینک جهانی یا لینک برنامه اندروید ارسال می‌شود و در صورت نصب توسط برنامه باز می‌شود. در حالت false، کد ابتدا به ویجت وب ارسال می‌شود و سپس در صورت نصب، در ادامه به برنامه هدایت می‌شود.
linkDomain رشته NS وقتی دامنه‌های لینک Hosting سفارشی برای یک پروژه تعریف می‌شوند، مشخص کنید که کدام یک برای باز شدن لینک توسط یک برنامه تلفن همراه مشخص استفاده شود. در غیر این صورت، دامنه پیش‌فرض به طور خودکار انتخاب می‌شود (برای مثال، PROJECT_ID .firebaseapp.com ).
dynamicLinkDomain رشته NS منسوخ شده. این پارامتر را مشخص نکنید.

مثال زیر نحوه ارسال لینک تأیید ایمیل را نشان می‌دهد که ابتدا در یک برنامه تلفن همراه با استفاده از دامنه پیوند Hosting سفارشی custom-domain.com باز می‌شود. این پیوند عمیق حاوی payload ادامه URL https://www.example.com/?email=user@example.com خواهد بود.

سویفت

var actionCodeSettings =  ActionCodeSettings.init()
actionCodeSettings.canHandleInApp = true
let user = Auth.auth().currentUser()
actionCodeSettings.URL =
    String(format: "https://www.example.com/?email=%@", user.email)
actionCodeSettings.iOSbundleID = Bundle.main.bundleIdentifier!
actionCodeSettings.setAndroidPakageName("com.example.android")
// Specify a custom Hosting link domain to use. The domain must be
// configured in Firebase Hosting and owned by the project.
actionCodeSettings.linkDomain = "custom-domain.com"
user.sendEmailVerification(withActionCodeSettings:actionCodeSettings { error in
  if error {
    // Error occurred. Inspect error.code and handle error.
    return
  }
  // Email verification sent.
})

هدف-سی

 FIRActionCodeSettings *actionCodeSettings = [[FIRActionCodeSettings alloc] init];
 actionCodeSettings.handleCodeInApp = YES;
 FIRUser *user = [FIRAuth auth].currentUser;
 NSString *urlString =
     [NSString stringWithFormat:@"https://www.example.com/?email=%@", user.email];
 actionCodeSettings.URL = [NSURL URLWithString:urlString];
 actionCodeSettings.iOSBundleID = [NSBundle mainBundle].bundleIdentifier;
// Specify a custom Hosting link domain to use. The domain must be
// configured in Firebase Hosting and owned by the project.
 actionCodeSettings.linkDomain = @"custom-domain.com";
 [actionCodeSettings setAndroidPackageName:@"com.example.android"];
 [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings
                                        completion:^(NSError *_Nullable error) {
   if (error) {
     // Error occurred. Inspect error.code and handle error.
     return;
   }
   // Email verification sent.
 }];

Firebase Authentication هنگام ارسال لینکی که قرار است در یک برنامه تلفن همراه باز شود، Firebase Hosting استفاده می‌کند. برای استفاده از این ویژگی، Hosting لینک‌ها باید در کنسول Firebase پیکربندی شود.

  1. پیکربندی برنامه‌های اپل:

    1. اگر قصد دارید این لینک‌ها را از برنامه خود مدیریت کنید، باید دامنه لینک Hosting را به عنوان یک دامنه مرتبط در قابلیت‌های برنامه خود پیکربندی کنید.
    2. برای اطلاعات بیشتر در این مورد، به دستورالعمل‌های دریافت لینک‌های میزبانی iOS مراجعه کنید.
  2. پیکربندی برنامه‌های اندروید:

    1. اگر قصد دارید این لینک‌ها را از برنامه اندروید خود مدیریت کنید، نام بسته برنامه شما باید در تنظیمات پروژه کنسول Firebase مشخص شود. علاوه بر این، SHA-1 و SHA-256 گواهی برنامه نیز باید ارائه شوند.
    2. همچنین باید فیلتر intent را برای لینک عمیق در فایل AndroidManifest.xml خود پیکربندی کنید.
    3. برای اطلاعات بیشتر در این مورد، به دستورالعمل‌های دریافت لینک‌های میزبانی اندروید مراجعه کنید.

مدیریت اقدامات ایمیل در یک برنامه وب

می‌توانید مشخص کنید که آیا می‌خواهید ابتدا لینک کد اکشن را از یک برنامه وب مدیریت کنید و سپس پس از اتمام موفقیت‌آمیز، به صفحه وب یا برنامه موبایل دیگری هدایت شوید، مشروط بر اینکه برنامه موبایل در دسترس باشد. این کار با تنظیم handleCodeInApp به false در شیء FIRActionCodeSettings (Obj-C) یا ActionCodeSettings (Swift) انجام می‌شود. در حالی که شناسه بسته یا نام بسته اندروید لازم نیست، ارائه آنها به کاربر اجازه می‌دهد تا پس از تکمیل کد اکشن ایمیل، به برنامه مشخص شده هدایت شود.

آدرس اینترنتی مورد استفاده در اینجا، همانی است که در بخش قالب‌های عملیات ایمیل پیکربندی شده است. یک آدرس اینترنتی پیش‌فرض برای همه پروژه‌ها در نظر گرفته شده است. برای کسب اطلاعات بیشتر در مورد نحوه سفارشی‌سازی کنترل‌کننده عملیات ایمیل، به بخش سفارشی‌سازی کنترل‌کننده‌های ایمیل مراجعه کنید.

در این حالت، لینک درون پارامتر کوئری continueURL یک لینک Hosting خواهد بود که payload آن، URL مشخص شده در شیء ActionCodeSettings است.

هنگام مدیریت اقدامات ایمیل مانند تأیید ایمیل، کد اکشن از پارامتر کوئری oobCode باید از لینک عمیق تجزیه شود و سپس از طریق applyActionCode اعمال شود تا تغییر اعمال شود، یعنی ایمیل تأیید شود.

مدیریت اقدامات ایمیل در یک برنامه تلفن همراه

می‌توانید مشخص کنید که آیا می‌خواهید ابتدا لینک کد اکشن را در برنامه موبایل خود مدیریت کنید، البته به شرطی که نصب شده باشد. اگر روی لینک از دستگاهی که از برنامه موبایل پشتیبانی نمی‌کند کلیک شود، به جای آن از یک صفحه وب باز می‌شود. این کار با تنظیم handleCodeInApp روی true در شیء FIRActionCodeSettings (Obj-C) یا ActionCodeSettings (Swift) انجام می‌شود. نام بسته اندروید یا شناسه بسته برنامه موبایل نیز باید مشخص شود. آدرس اینترنتی جایگزین که در اینجا استفاده می‌شود، زمانی که هیچ برنامه موبایلی در دسترس نیست، همانی است که در بخش الگوهای اقدام ایمیل پیکربندی شده است. یک آدرس اینترنتی پیش‌فرض برای همه پروژه‌ها در نظر گرفته شده است. برای کسب اطلاعات بیشتر در مورد نحوه سفارشی‌سازی کنترل‌کننده اقدام ایمیل، به بخش سفارشی‌سازی کنترل‌کننده‌های ایمیل مراجعه کنید.

در این حالت، لینک برنامه تلفن همراه ارسال شده به کاربر، یک لینک Hosting خواهد بود که محتوای آن، URL کد اکشن است که در کنسول پیکربندی شده و دارای پارامترهای کوئری oobCode ، mode ، apiKey و continueUrl می‌باشد. مورد دوم، URL اصلی مشخص شده در شیء FIRActionCodeSettings (Obj-C) یا ActionCodeSettings (Swift) خواهد بود. کد اکشن را می‌توان مستقیماً از یک برنامه تلفن همراه، مشابه نحوه مدیریت آن از جریان وب که در بخش سفارشی‌سازی کنترل‌کننده‌های ایمیل توضیح داده شده است، اعمال کرد.

هنگام مدیریت اقدامات ایمیل مانند تأیید ایمیل، کد اکشن از پارامتر کوئری oobCode باید از لینک عمیق تجزیه شود و سپس از طریق applyActionCode اعمال شود تا تغییر اعمال شود، یعنی ایمیل تأیید شود.