هنگام ارسال اقدامات ایمیل برای بازنشانی رمز عبور یا تأیید ایمیل کاربر، میتوانید وضعیت را از طریق URL ادامه دهید. این امکان را برای کاربر فراهم می کند تا پس از اتمام عمل به برنامه برگردد. علاوه بر این، میتوانید تعیین کنید که آیا پیوند اقدام ایمیل بهجای یک صفحه وب، مستقیماً از یک برنامه تلفن همراه نصب میشود یا خیر.
این می تواند در سناریوهای رایج زیر بسیار مفید باشد:
کاربری که در حال حاضر وارد سیستم نشده است، ممکن است در تلاش برای دسترسی به محتوایی باشد که کاربر باید وارد سیستم شود. با این حال، کاربر ممکن است رمز عبور خود را فراموش کرده باشد و بنابراین جریان رمز عبور بازنشانی را آغاز کند. در پایان جریان، کاربر انتظار دارد به بخشی از برنامه که میخواست به آن دسترسی پیدا کند، برگردد.
ممکن است یک برنامه فقط به حساب های تأیید شده دسترسی داشته باشد. به عنوان مثال، یک خبرنامه ممکن است از کاربر بخواهد که ایمیل خود را قبل از عضویت تأیید کند. کاربر جریان تأیید ایمیل را طی می کند و انتظار دارد برای تکمیل اشتراک خود به برنامه برگردد.
در موارد دیگر، کاربر ممکن است جریان را از دستگاه تلفن همراه خود شروع کرده باشد و پس از تأیید انتظار داشته باشد که به جای مرورگر به برنامه تلفن همراه خود بازگردد.
داشتن قابلیت انتقال حالت از طریق URL ادامه دهنده، ویژگی قدرتمندی است که Firebase Auth ارائه می کند و می تواند تجربه کاربر را به میزان قابل توجهی افزایش دهد.
عبور از وضعیت ادامه URL در اقدامات ایمیل
برای ارسال ایمن URL ادامه، دامنه URL باید در لیست سفید کنسول Firebase قرار گیرد. این کار در بخش Authentication با افزودن این دامنه به لیست دامنه های مجاز در زبانه روش ورود به سیستم، در صورتی که قبلاً وجود ندارد، انجام می شود.
هنگام ارسال ایمیل بازنشانی رمز عبور یا ایمیل تأیید، باید یک نمونه ActionCodeSettings ارائه شود. می توان آن را با کلاس ActionCodeSettings.Builder مرتبط ایجاد کرد که حاوی متدهای زیر است:
روش | توضیحات |
---|---|
setUrl(String url) | پیوند (وضعیت/ادامه URL) را تنظیم می کند که در زمینه های مختلف معانی مختلفی دارد:
|
setIOSBundleId(String iOSBundleId) | شناسه بسته iOS را برای کمک به Firebase Authentication تعیین میکند که آیا باید یک پیوند فقط وب یا تلفن همراه ایجاد کند که در دستگاه Apple باز میشود. |
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) | نام بسته Android را برای کمک به Firebase Authentication تنظیم میکند تا تعیین کند آیا باید یک پیوند فقط وب یا تلفن همراه ایجاد کند که در دستگاه Android باز میشود. |
setHandleCodeInApp(boolean status) | آیا پیوند اقدام ایمیل ابتدا در یک برنامه تلفن همراه باز می شود یا یک پیوند وب. پیش فرض نادرست است. وقتی روی true تنظیم شود، پیوند کد اقدام به عنوان پیوند جهانی یا پیوند برنامه Android ارسال میشود و در صورت نصب توسط برنامه باز میشود. در صورت نادرست، کد ابتدا به ویجت وب ارسال می شود و سپس در صورت نصب به برنامه ادامه می دهد. |
setLinkDomain(String customDomain) | هنگامی که دامنه های پیوند Hosting سفارشی برای یک پروژه تعریف می شود، مشخص کنید زمانی که پیوند قرار است توسط یک برنامه تلفن همراه مشخص باز شود، از کدام یک استفاده شود. در غیر این صورت، دامنه پیش فرض به طور خودکار انتخاب می شود (به عنوان مثال،PROJECT_ID .firebaseapp.com ). |
setDynamicLinkDomain(String dynamicLinkDomain) | منسوخ شده است. این پارامتر را مشخص نکنید. |
مثال زیر نحوه ارسال یک پیوند تأیید ایمیل را نشان می دهد که ابتدا در یک برنامه تلفن همراه باز می شود. پیوند عمیق حاوی بار URL ادامه دارد http://www.example.com/verify?uid=1234
.
Kotlin
val auth = Firebase.auth val user = auth.currentUser!! val url = "http://www.example.com/verify?uid=" + user.uid val actionCodeSettings = ActionCodeSettings.newBuilder() .setUrl(url) .setIOSBundleId("com.example.ios") // The default for this is populated with the current android package name. .setAndroidPackageName("com.example.android", false, null) .build() user.sendEmailVerification(actionCodeSettings) .addOnCompleteListener { task -> if (task.isSuccessful) { Log.d(TAG, "Email sent.") } }
Java
FirebaseAuth auth = FirebaseAuth.getInstance(); FirebaseUser user = auth.getCurrentUser(); String url = "http://www.example.com/verify?uid=" + user.getUid(); ActionCodeSettings actionCodeSettings = ActionCodeSettings.newBuilder() .setUrl(url) .setIOSBundleId("com.example.ios") // The default for this is populated with the current android package name. .setAndroidPackageName("com.example.android", false, null) .build(); user.sendEmailVerification(actionCodeSettings) .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Log.d(TAG, "Email sent."); } } });
پیکربندی پیوندهای میزبانی Firebase
هنگام ارسال پیوندی که قرار است در یک برنامه تلفن همراه باز شود، Firebase Authentication از Firebase Hosting استفاده می کند. برای استفاده از این ویژگی، پیوندهای میزبانی باید در کنسول Firebase پیکربندی شوند.
پیکربندی برنامه های اندروید:
- اگر قصد دارید این پیوندها را از برنامه Android خود مدیریت کنید، نام بسته برنامه شما باید در تنظیمات پروژه کنسول Firebase مشخص شود. علاوه بر این، SHA-1 و SHA-256 گواهی درخواست باید ارائه شود.
- همچنین باید فیلتر intent را برای پیوند عمیق در فایل
AndroidManifest.xml
خود پیکربندی کنید. - برای اطلاعات بیشتر در این مورد، به دستورالعملهای دریافت پیوندهای میزبانی اندروید مراجعه کنید.
پیکربندی برنامه های iOS:
- اگر قصد دارید این پیوندها را از برنامه iOS خود مدیریت کنید، باید دامنه پیوند Hosting را به عنوان یک دامنه مرتبط در قابلیت های برنامه خود پیکربندی کنید.
- برای اطلاعات بیشتر در این مورد، به دستورالعملهای دریافت پیوندهای میزبانی iOS مراجعه کنید.
مدیریت اقدامات ایمیل در یک برنامه وب
میتوانید تعیین کنید که آیا میخواهید ابتدا پیوند کد عمل را از یک برنامه وب مدیریت کنید و سپس پس از تکمیل موفقیتآمیز به صفحه وب یا برنامه تلفن همراه دیگر هدایت شوید، مشروط بر اینکه برنامه تلفن همراه در دسترس باشد. این کار با فراخوانی setHandleCodeInApp(false)
در شی ActionCodeSettings.Builder انجام می شود. اگرچه شناسه بسته iOS یا نام بسته Android مورد نیاز نیست، ارائه آنها به کاربر این امکان را می دهد که در تکمیل کد اقدام ایمیلی به برنامه مشخص شده بازگردانده شود.
URL وب مورد استفاده در اینجا، همانی است که در بخش الگوهای اقدام ایمیل پیکربندی شده است. یک پیش فرض برای همه پروژه ها ارائه شده است. برای کسب اطلاعات بیشتر در مورد نحوه سفارشی کردن کنترل کننده اقدام ایمیل، به سفارشی سازی کنترل کننده های ایمیل مراجعه کنید.
در این مورد، پیوند درون پارامتر query continueUrl
یک پیوند Hosting خواهد بود که بارگذاری آن URL
مشخص شده در شی ActionCodeSettings
است.
هنگام مدیریت اقدامات ایمیل مانند تأیید ایمیل، کد اقدام از پارامتر query oobCode
باید از پیوند عمیق تجزیه شود و سپس از طریق applyActionCode
اعمال شود تا تغییر اعمال شود، یعنی ایمیل تأیید شود.
مدیریت اقدامات ایمیل در یک برنامه تلفن همراه
میتوانید تعیین کنید که آیا میخواهید ابتدا پیوند کد عمل را در برنامه تلفن همراه خود مدیریت کنید، مشروط بر اینکه نصب شده باشد. اگر روی پیوند از دستگاهی که از برنامه تلفن همراه پشتیبانی نمی کند کلیک شود، به جای آن از یک صفحه وب باز می شود. این کار با فراخوانی setHandleCodeInApp(true)
در شی ActionCodeSettings.Builder انجام می شود. نام بسته Android یا شناسه بسته iOS برنامه تلفن همراه نیز باید مشخص شود.
URL وب بازگشتی که در اینجا استفاده می شود، زمانی که هیچ برنامه تلفن همراه در دسترس نیست، همانی است که در بخش الگوهای اقدام ایمیل پیکربندی شده است. یک پیش فرض برای همه پروژه ها ارائه شده است. برای کسب اطلاعات بیشتر در مورد نحوه سفارشی کردن کنترل کننده اقدام ایمیل، به سفارشی سازی کنترل کننده های ایمیل مراجعه کنید.
در این حالت، پیوند برنامه تلفن همراه که برای کاربر ارسال میشود، یک پیوند Hosting خواهد بود که بارگذاری آن URL کد اقدام است که در کنسول پیکربندی شده است، با پارامترهای جستجو oobCode
، mode
، apiKey
و continueUrl
. دومی URL
اصلی مشخص شده در شی ActionCodeSettings
خواهد بود. کد اقدام را می توان مستقیماً از یک برنامه تلفن همراه مانند نحوه استفاده از جریان وب شرح داده شده در بخش سفارشی سازی کنترل کننده های ایمیل اعمال کرد.
هنگام مدیریت اقدامات ایمیل مانند تأیید ایمیل، کد اقدام از پارامتر query oobCode
باید از پیوند عمیق تجزیه شود و سپس از طریق applyActionCode
اعمال شود تا تغییر اعمال شود، یعنی ایمیل تأیید شود.