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

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

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

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

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

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

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

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

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

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

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

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

روش توضیحات
setUrl(String url)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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