گذراندن وضعیت در کنش‌های ایمیل

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

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

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

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

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

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

انتقال وضعیت نشانی وب ادامه در کنش‌های ایمیل

برای انتقال ایمن نشانی وب ادامه، باید دامنه نشانی وب را به‌عنوان دامنه مجاز اضافه کنید:

  1. در کنسول Firebase، به امنیت > اصالت‌سنجی > زبانه تنظیمات بروید.

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

هنگام ارسال ایمیل بازنشانی گذرواژه یا ایمیل درستی‌سنجی، باید نمونه ActionCodeSettings ارائه شود. می‌توان آن را با کلاس منسوب ActionCodeSettings.Builder ایجاد کرد که حاوی روش‌های زیر است:

روش شرح
setUrl(String url)

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

  • وقتی پیوند در ابزارک‌های کنش وب مدیریت می‌شود، این پیوند عمیق در پارامتر پُرسمان continueUrl است.
  • وقتی پیوند مستقیماً در برنامه مدیریت می‌شود، این پارامتر continueUrl پُرسمان در پیوند عمیق پیوند Hosting است.
setIOSBundleId(String iOSBundleId) شناسه بسته iOS را تنظیم می‌کند تا به Firebase Authentication کمک کند تعیین کند که آیا باید پیوند فقط وب یا پیوند تلفن همراه ایجاد کند که در دستگاه Apple باز می‌شود
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) نام بسته Android را تنظیم می‌کند تا به Firebase Authentication کمک کند تعیین کند آیا باید پیوند فقط وب یا پیوند تلفن همراه ایجاد کند که در دستگاه Android باز می‌شود
setHandleCodeInApp(boolean status) اینکه پیوند کنش ایمیل ابتدا در برنامه تلفن همراه یا پیوند وب باز شود. پیش‌فرض «نادرست» است. وقتی روی درست تنظیم شود، پیوند کد کنش به‌صورت «پیوند جهانی» یا «پیوند برنامه Android» ارسال می‌شود و اگر برنامه نصب شده باشد، با آن باز می‌شود. در حالت نادرست، کد ابتدا به ابزاره وب ارسال می‌شود و سپس درصورت نصب بودن برنامه، با ادامه دادن به برنامه هدایت می‌شوید.
setLinkDomain(String customDomain) وقتی دامنه‌های پیوند سفارشی Hosting برای پروژه‌ای تعریف می‌شود، مشخص کنید وقتی پیوند باید توسط برنامه تلفن همراه مشخصی باز شود از کدام دامنه استفاده شود. درغیراین‌صورت، دامنه پیش‌فرض به‌طور خودکار انتخاب می‌شود (برای مثال، PROJECT_ID.firebaseapp.com).
setDynamicLinkDomain(String dynamicLinkDomain) منسوخ‌شده. این پارامتر را مشخص نکنید.

مثال زیر نشان می‌دهد که چگونه پیوند درستی‌سنجی ایمیل ارسال کنید که ابتدا در برنامه تلفن همراه باز شود. پیوند عمیق حاوی بار 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 Authentication هنگام ارسال پیوندی که قرار است در برنامه تلفن همراه باز شود از Firebase Hosting استفاده می‌کند. برای استفاده از این ویژگی، پیوندهای میزبانی باید در کنسول Firebase پیکربندی شوند.

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

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

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

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

می‌توانید مشخص کنید که آیا می‌خواهید پیوند کد کنش را ابتدا از برنامه وب مدیریت کنید و سپس پس‌از تکمیل موفقیت‌آمیز، به صفحه وب یا برنامه تلفن همراه دیگری هدایت کنید، به‌شرطی که برنامه تلفن همراه دردسترس باشد. این کار با فراخوانی setHandleCodeInApp(false) در ActionCodeSettings.Builder انجام می‌شود. اگرچه شناسه بسته نرم‌افزاری iOS یا نام بسته Android الزامی نیست، ارائه آن‌ها به کاربر امکان می‌دهد پس‌از تکمیل کد کنش ایمیل به برنامه مشخص‌شده هدایت شود.

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

در این مورد، پیوند درون پارامتر پُرسمان continueUrl پیوند Hosting خواهد بود که داده‌بر آن URL مشخص‌شده در شیء ActionCodeSettings است.

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

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

می‌توانید مشخص کنید که آیا می‌خواهید پیوند کد کنش را ابتدا در برنامه تلفن همراهتان مدیریت کنید یا نه، البته به شرطی که نصب شده باشد. اگر پیوند از دستگاهی که از برنامه تلفن همراه پشتیبانی نمی‌کند کلیک شود، به‌جای آن از صفحه وب باز می‌شود. این کار با فراخوانی setHandleCodeInApp(true) در شیء ActionCodeSettings.Builder انجام می‌شود. نام بسته Android یا شناسه بسته نرم‌افزاری iOS برنامه تلفن همراه نیز باید مشخص شود.

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

در این مورد، پیوند برنامه تلفن همراه ارسال‌شده به کاربر پیوند Hosting خواهد بود که پیام آن نشانی وب کد کنش است که در «کنسول» با پُرسمان پارامترهای oobCode، mode، apiKey، و continueUrl پیکربندی شده است. مورد دوم URL اصلی خواهد بود که در شیء ActionCodeSettings مشخص شده است. کد کنش را می‌توان مستقیماً از برنامه تلفن همراه اعمال کرد، مشابه نحوه مدیریت آن از جریان وب که در بخش سفارشی‌سازی مدیریت‌کننده‌های ایمیل توضیح داده شده است.

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