حالة النجاح في إجراءات البريد الإلكتروني

يمكنك تمرير الحالة عبر عنوان URL للمتابعة عند إرسال إجراءات البريد الإلكتروني للحصول على كلمة المرور. إعادة تعيين البريد الإلكتروني للمستخدم أو التحقق منه. يوفر هذا للمستخدم القدرة على والعودة إلى التطبيق بعد اكتمال الإجراء. بالإضافة إلى ذلك، يمكنك تحديد ما إذا كان سيتم التعامل مع رابط إجراء البريد الإلكتروني مباشرةً من تطبيق الأجهزة الجوّالة أم لا إذا تم تثبيته بدلاً من استخدام صفحة ويب.

قد يكون هذا مفيدًا للغاية في السيناريوهات الشائعة التالية:

  • قد يحاول مستخدم، غير مسجِّل الدخول حاليًا، الوصول إلى محتوى يجب أن يسجّل المستخدم الدخول. ومع ذلك، ربما نسي المستخدم كلمة مروره، وبالتالي تبدأ عملية إعادة تعيين كلمة المرور. في نهاية المطاف، التدفق، يتوقع المستخدم العودة إلى قسم التطبيق الذي محاولة الوصول إليه.

  • لا يجوز أن يوفّر أحد التطبيقات سوى إمكانية الوصول إلى الحسابات التي تم التحقّق منها. بالنسبة مثلاً، قد تتطلب النشرة الإخبارية من المستخدم إثبات ملكية بريده الإلكتروني قبل الاشتراك. يمر المستخدم بخطوات إثبات ملكية عنوان البريد الإلكتروني ويتوقع للعودة إلى التطبيق لإكمال الاشتراك

  • في حالات أخرى، قد يكون المستخدم قد بدأ التدفق من جهازه المحمول ويتوقعون بعد التحقق العودة إلى تطبيق الأجهزة الجوّالة بدلاً من المتصفح.

إنّ إمكانية تمرير الحالة عبر عنوان URL للمتابعة هي ميزة فعّالة. توفِّر مصادقة Firebase ويمكن أن تحسِّن تجربة المستخدم بشكل كبير.

حالة التمرير/متابعة عنوان URL في إجراءات البريد الإلكتروني

لتمرير عنوان URL للمتابعة بشكل آمن، يجب أن يكون نطاق عنوان URL هو تمت إضافتك إلى القائمة البيضاء في وحدة تحكُّم Firebase. يتم ذلك في قسم المصادقة من خلال إضافة هذا النطاق إلى قائمة بالنطاقات المسموح بها ضمن علامة التبويب طريقة تسجيل الدخول إذا لم تكن مُدرَجة من قبل.

ActionCodeSettings التي ينبغي تقديم مثيل لها عند إرسال بريد إلكتروني لإعادة تعيين كلمة المرور أو رسالة التحقق. ويمكن إنشاؤه باستخدام ActionCodeSettings.Builder المرتبط الفئة التي تحتوي على الطرق التالية:

الطريقة الوصف
setUrl(String url)

لضبط الرابط (عنوان URL للحالة/المتابعة) الذي يحمل معانٍ مختلفة في سياقات مختلفة:

  • عند معالجة الرابط في أدوات إجراءات الويب، فإن هذا هو الموضع في معلَمة طلب البحث continueUrl.
  • عند التعامل مع الرابط في التطبيق مباشرةً، هذا هو معلَمة طلب البحث "continueUrl" في الرابط لصفحة في التطبيق الرابط الديناميكي.
setIOSBundleId(String iOSBundleId) لضبط معرّف حزمة iOS. سيحاول هذا فتح الرابط في تطبيق iOS في حال تم تثبيته. يجب تسجيل تطبيق iOS في Console.
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) لضبط اسم حزمة Android. سيؤدي هذا الإجراء إلى فتح الرابط في Android إذا كان مثبتًا. وفي حال ضبط installIfNotAvailable على true، سيتم تحديد تثبيت تطبيق Android إذا كان الجهاز متوافقًا معه غير مثبّت بالفعل. إذا تم تحديد الحدّ الأدنى للإصدار، وتم تثبيت إصدار قديم من التطبيق، يتم نقل المستخدم إلى "متجر Play" لترقية التطبيق. يجب تسجيل تطبيق Android في وحدة التحكم.
setHandleCodeInApp(boolean status) ما إذا كان رابط إجراء البريد الإلكتروني سيتم فتحه في تطبيق للأجهزة الجوّالة أو على الويب أولاً. وتكون القيمة التلقائية false. وعند ضبطها على "صحيح"، يعمل رابط رمز الإجراء سيتم إرساله كرابط عام أو رابط تطبيق Android وسيتم فتحه. بواسطة التطبيق إذا كان مثبّتًا. في الحالة الخاطئة، سيتم إرسال الرمز إلى تطبيق الويب المصغّر أولاً ثم المتابعة، ستتم إعادة التوجيه إلى التطبيق في حال مثبت.
setDynamicLinkDomain(String dynamicLinkDomain) تضبط نطاق الرابط الديناميكي (أو النطاق الفرعي) لاستخدامه مع الرابط الحالي. إذا كان سيتم فتحه باستخدام روابط Firebase الديناميكية. كديناميكي متعدد يمكن ضبط نطاقات الروابط لكل مشروع، ويوفر هذا الحقل والقدرة على اختيار واحدة بشكل صريح. إذا لم يتم تقديم أي اسم، يتم تحديد النطاق الأول يُستخدم بشكل افتراضي.

يوضح المثال التالي كيفية إرسال رابط التحقق من عنوان البريد الإلكتروني والذي سيفتح في تطبيق للأجهزة الجوّالة أولاً كرابط ديناميكي على Firebase (تطبيق iOS com.example.ios أو تطبيق Android com.example.android) تشير رسالة الأشكال البيانية رابط لصفحة في التطبيق سيحتوي على حمولة عنوان URL للمتابعة https://www.example.com/?email=user@example.com

Kotlin+KTX

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 الديناميكية عند إرسال رابطًا يُفترَض أن يتم فتحه في تطبيق الأجهزة الجوّالة. من أجل استخدام هذه هذه الميزة، يجب إعداد الروابط الديناميكية في "وحدة تحكُّم Firebase".

  1. تفعيل روابط Firebase الديناميكية:

    1. في وحدة تحكُّم Firebase، افتح القسم Dynamic Links.
    2. في حال عدم قبولك بنود "Dynamic Links" بعد وإنشاء Dynamic Links مجالك، قم بذلك الآن.

      إذا سبق لك إنشاء نطاق Dynamic Links، يُرجى تدوينه. Dynamic Links على النحو التالي:

      example.page.link

      ستحتاج إلى هذه القيمة عند ضبط تطبيق Apple أو Android على لاعتراض الرابط الوارد.

  2. تهيئة تطبيقات Android:

    1. إذا كنت تريد التعامل مع هذه الروابط من تطبيق Android، يجب تحديد اسم حزمة Android في وحدة تحكُّم Firebase. إعدادات المشروع. بالإضافة إلى ذلك، SHA-1 وSHA-256 للتطبيق الشهادة اللازمة.
    2. ستحتاج أيضًا إلى ضبط فلتر الأهداف للرابط لصفحة معيّنة في ملف AndroidManifest.xml.
    3. لمزيد من المعلومات، راجع تلقّي تعليمات بشأن ميزة "الروابط الديناميكية على Android"
  3. تهيئة تطبيقات iOS:

    1. إذا كنت تخطط للتعامل مع هذه الروابط من تطبيق iOS، يجب تحديد معرّف حزمة iOS في وحدة تحكُّم Firebase. إعدادات المشروع. بالإضافة إلى ذلك، إنّ معرّف App Store وApple Developer يجب أيضًا تحديد رقم تعريف الفريق.
    2. ستحتاج أيضًا إلى ضبط نطاق الرابط العام لـ FDL على أنّه النطاق المرتبط في إمكانات تطبيقك.
    3. إذا كنت تريد توزيع تطبيقك على الإصدار 8 من نظام التشغيل iOS والإصدارات الأقدم، عليك ضبط معرّف حزمة iOS كمخطط مخصّص للطلبات الواردة. عناوين URL.
    4. لمزيد من المعلومات، راجع تلقّي تعليمات بشأن الروابط الديناميكية لنظام التشغيل iOS

التعامل مع إجراءات البريد الإلكتروني في تطبيق ويب

يمكنك تحديد ما إذا كنت تريد معالجة رابط رمز الإجراء من موقع إلكتروني. التطبيق أولاً ثم إعادة التوجيه إلى صفحة ويب أو تطبيق للأجهزة الجوّالة آخر بعد الإكمال بنجاح، بشرط أن يكون تطبيق الأجهزة الجوّالة متاحًا. ويتم ذلك من خلال الاتصال بـ setHandleCodeInApp(false) في ActionCodeSettings.Builder الخاص بك. على الرغم من أنّ معرّف حزمة iOS أو اسم حزمة Android غير مطلوب، إلا أنّ توفيرهما سيسمح للمستخدم لإعادة التوجيه إلى التطبيق المحدّد عند إكمال رمز إجراء البريد الإلكتروني

عنوان URL للويب المستخدَم هنا هو العنوان الذي تم إعداده في نماذج الإجراءات عبر البريد الإلكتروني . يتم توفير نموذج تلقائي لجميع المشاريع. ارجع إلى تخصيص معالِجات البريد الإلكتروني لمعرفة المزيد حول كيفية تخصيص معالج إجراء البريد الإلكتروني.

في هذه الحالة، سيكون الرابط ضمن معلَمة طلب البحث continueUrl رابط FDL الذي تكون حمولةته هي URL المحدّد في ActionCodeSettings الخاص بك. يمكنك اعتراض الرابط الوارد من تطبيقك والتعامل معه. بدون أي تبعية إضافية، ننصحك باستخدام مكتبة برامج FDL رابط الموضع المعيّن لك.

عند التعامل مع إجراءات البريد الإلكتروني مثل التحقق من البريد الإلكتروني، يتم عرض رمز الإجراء من يجب تحليل معلَمة طلب البحث "oobCode" من الرابط لصفحة في التطبيق، ثم تطبيقها. عبر applyActionCode لكي يسري التغيير، أي البريد الإلكتروني المطلوب التحقق منه.

التعامل مع إجراءات البريد الإلكتروني في تطبيق للأجهزة الجوّالة

يمكنك تحديد ما إذا كنت تريد معالجة رابط رمز الإجراء في تطبيق الهاتف المحمول أولاً، بشرط أن يكون مثبتًا. باستخدام تطبيقات Android، ويمكنك أيضًا تحديد أنّ التطبيق يتضمّن قيمة منطقية installIfNotAvailable للإشارة إلى أنّ التطبيق أن يتم تثبيته إذا كان الجهاز متوافقًا معه ولم يكن مثبّتًا. إذا تم النقر على الرابط من جهاز لا يعمل مع الجوّال تطبيقًا، يتم فتحه من صفحة ويب بدلاً من ذلك. ويتم ذلك من خلال الاتصال بـ setHandleCodeInApp(true) في ActionCodeSettings.Builder الخاص بك. كما يجب أيضًا تحديد اسم حزمة Android أو معرّف حزمة iOS لتطبيق الأجهزة الجوّالة.

عنوان URL الاحتياطي المستخدم هنا، عندما لا يتوفر أي تطبيق للأجهزة الجوّالة، هو العنوان في قسم نماذج إجراءات البريد الإلكتروني. يتم توفير حساب تلقائي لجميع المشروعات. ارجع إلى تخصيص معالِجات البريد الإلكتروني لمعرفة المزيد حول كيفية تخصيص معالج إجراء البريد الإلكتروني.

في هذه الحالة، سيكون رابط تطبيق الأجهزة الجوّالة الذي يتم إرساله إلى المستخدم رابط FDL هو عنوان URL لرمز الإجراء، والذي تمت تهيئته في وحدة التحكم، مع طلب المَعلمات oobCode وmode وapiKey وcontinueUrl سيكون الموضع الأخير قيمة URL الأصلية المحددة في الكائن ActionCodeSettings. وعلى الرغم من أنّه يمكنك اعتراض الروابط الواردة من تطبيقك والتعامل معها بدون أي إجراءات إضافية ننصحك باستخدام مكتبة برامج FDL لتحليل الرابط الخاص بموضع معيّن يناسبك ذلك. يمكن تطبيق رمز الإجراء مباشرةً من تطبيق للأجهزة الجوّالة مشابه على كيفية التعامل معه من تدفق الويب الموضح في تخصيص معالِجات البريد الإلكتروني.

عند التعامل مع إجراءات البريد الإلكتروني مثل التحقق من البريد الإلكتروني، يتم عرض رمز الإجراء من يجب تحليل معلَمة طلب البحث "oobCode" من الرابط لصفحة في التطبيق، ثم تطبيقها. عبر applyActionCode لكي يسري التغيير، أي البريد الإلكتروني المطلوب التحقق منه.