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

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

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

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

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

  • به طور کلی، هنگامی که یک کاربر بازنشانی رمز عبور یا جریان تأیید ایمیل را در یک برنامه اپل آغاز می کند، انتظار دارد جریان را در برنامه تکمیل کند. امکان انتقال حالت از طریق URL ادامه دهنده این امکان را فراهم می کند.

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

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

برای ارسال ایمن URL ادامه، دامنه URL باید در لیست سفید کنسول Firebase قرار گیرد. این کار در بخش Authentication با افزودن این دامنه به لیست دامنه های مجاز در زبانه روش ورود به سیستم، در صورتی که قبلاً وجود ندارد، انجام می شود.

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

سویفت

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

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

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

هدف-C

پارامتر تایپ کنید توضیحات
URL NSString

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

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

مثال زیر نحوه ارسال یک پیوند تأیید ایمیل را نشان می دهد که ابتدا با استفاده از دامنه پیوند Hosting سفارشی custom-domain.com در یک برنامه تلفن همراه باز می شود. پیوند عمیق حاوی بارگیری 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.
})

هدف-C

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

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

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

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

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

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

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

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

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

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