يمكنك تمرير الحالة عبر عنوان URL للمتابعة عند إرسال إجراءات البريد الإلكتروني لإعادة تعيين كلمة المرور أو التحقق من البريد الإلكتروني للمستخدم. يوفر هذا للمستخدم القدرة على العودة إلى التطبيق بعد اكتمال الإجراء. بالإضافة إلى ذلك ، يمكنك تحديد ما إذا كنت تريد التعامل مع ارتباط إجراء البريد الإلكتروني مباشرةً من تطبيق الهاتف المحمول عند تثبيته بدلاً من صفحة الويب.
يمكن أن يكون هذا مفيدًا للغاية في السيناريوهات الشائعة التالية:
قد يحاول أحد المستخدمين ، الذي لم يتم تسجيل دخوله حاليًا ، الوصول إلى المحتوى الذي يتطلب تسجيل دخول المستخدم. ومع ذلك ، ربما يكون المستخدم قد نسي كلمة المرور الخاصة به ، وبالتالي يقوم بتشغيل تدفق إعادة تعيين كلمة المرور. في نهاية التدفق ، يتوقع المستخدم العودة إلى قسم التطبيق الذي كان يحاول الوصول إليه.
قد يعرض التطبيق فقط الوصول إلى الحسابات التي تم التحقق منها. على سبيل المثال ، قد تطلب رسالة إخبارية من المستخدم التحقق من بريده الإلكتروني قبل الاشتراك. سيخضع المستخدم لتدفق التحقق من البريد الإلكتروني ويتوقع العودة إلى التطبيق لإكمال اشتراكه.
في حالات أخرى ، ربما يكون المستخدم قد بدأ التدفق من أجهزته المحمولة ويتوقع بعد التحقق العودة إلى تطبيقه المحمول بدلاً من المتصفح.
تعد القدرة على تمرير الحالة عبر عنوان URL للمتابعة ميزة قوية يوفرها Firebase Auth والتي يمكن أن تعزز تجربة المستخدم بشكل كبير.
حالة المرور / متابعة URL في إجراءات البريد الإلكتروني
من أجل تمرير عنوان URL للمتابعة بشكل آمن ، يجب إضافة نطاق عنوان URL إلى القائمة البيضاء في وحدة تحكم Firebase . يتم ذلك في قسم المصادقة عن طريق إضافة هذا المجال إلى قائمة المجالات المصرح بها ضمن علامة تبويب طريقة تسجيل الدخول إذا لم تكن موجودة بالفعل.
يجب توفير مثيل ActionCodeSettings عند إرسال بريد إلكتروني لإعادة تعيين كلمة المرور أو بريد إلكتروني للتحقق. يمكن إنشاؤه باستخدام فئة ActionCodeSettings.Builder المرتبطة والتي تحتوي على الطرق التالية:
طريقة | وصف |
---|---|
setUrl(String url) | يعيّن الرابط (عنوان URL الخاص بالحالة / المتابعة) الذي له معاني مختلفة في سياقات مختلفة:
|
setIOSBundleId(String iOSBundleId) | يضبط معرف حزمة iOS. سيحاول هذا فتح الرابط في تطبيق iOS إذا كان مثبتًا. يجب تسجيل تطبيق iOS في وحدة التحكم. |
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) | يعيّن اسم حزمة Android. سيحاول هذا فتح الرابط في تطبيق android إذا كان مثبتًا. إذا تم تعيين installIfNotAvailable على " true " ، فإنه يحدد ما إذا كان سيتم تثبيت تطبيق Android إذا كان الجهاز يدعمه ولم يكن التطبيق مثبتًا بالفعل. إذا تم تحديد الإصدار الأدنى ، وتم تثبيت إصدار أقدم من التطبيق ، فسيتم نقل المستخدم إلى متجر Play لترقية التطبيق. يجب تسجيل تطبيق Android في وحدة التحكم. |
setHandleCodeInApp(boolean status) | ما إذا كان سيتم فتح ارتباط إجراء البريد الإلكتروني في تطبيق جوال أو رابط ويب أولاً. الافتراضي هو خطأ. عند التعيين على "صحيح" ، سيتم إرسال رابط رمز الإجراء كرابط عام أو رابط تطبيق 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 Auth روابط Firebase الديناميكية عند إرسال رابط من المفترض أن يتم فتحه في تطبيق جوال. لاستخدام هذه الميزة ، يجب تكوين الروابط الديناميكية في Firebase Console.
تفعيل روابط Firebase الديناميكية:
- في وحدة تحكم Firebase ، افتح قسم الروابط الديناميكية .
إذا لم تكن قد وافقت بعد على شروط الروابط الديناميكية وأنشأت نطاق روابط ديناميكية ، فافعل ذلك الآن.
إذا كنت قد أنشأت بالفعل مجال روابط ديناميكية ، فقم بتدوين ذلك. عادة ما يبدو مجال الروابط الديناميكية مثل المثال التالي:
example.page.link
ستحتاج إلى هذه القيمة عند تكوين تطبيق Apple أو Android لاعتراض الرابط الوارد.
تكوين تطبيقات Android:
- إذا كنت تخطط للتعامل مع هذه الروابط من تطبيق Android الخاص بك ، فيجب تحديد اسم حزمة Android في إعدادات مشروع Firebase Console. بالإضافة إلى ذلك ، يجب توفير SHA-1 و SHA-256 لشهادة التطبيق.
- ستحتاج أيضًا إلى تكوين عامل تصفية الهدف للرابط الداخلي في ملف AndroidManifest.xml.
- لمزيد من المعلومات حول هذا الأمر ، راجع تعليمات تلقي روابط Android الديناميكية .
تكوين تطبيقات iOS:
- إذا كنت تخطط للتعامل مع هذه الروابط من تطبيق iOS الخاص بك ، فيجب تحديد معرف حزمة iOS في إعدادات مشروع Firebase Console. بالإضافة إلى ذلك ، يجب أيضًا تحديد معرف متجر التطبيقات ومعرف فريق مطوري Apple.
- ستحتاج أيضًا إلى تكوين مجال الارتباط العالمي FDL كمجال مرتبط في إمكانات التطبيق الخاص بك.
- إذا كنت تخطط لتوزيع تطبيقك على إصدارات iOS 8 وما دونها ، فستحتاج إلى تعيين معرف حزمة iOS الخاص بك كمخطط مخصص لعناوين URL الواردة.
- لمزيد من المعلومات حول هذا الأمر ، راجع تعليمات تلقي الروابط الديناميكية لنظام 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
حتى يسري التغيير ، أي يتم التحقق من البريد الإلكتروني.