يمكنك تمرير الحالة من خلال متابعة عنوان URL عند إرسال إجراءات عبر البريد الإلكتروني لإعادة ضبط كلمات المرور أو التحقّق من البريد الإلكتروني للمستخدم. يمنح ذلك المستخدم إمكانية الرجوع إلى التطبيق بعد إكمال الإجراء. بالإضافة إلى ذلك، يمكنك تحديد ما إذا كنت تريد معالجة رابط لاتّخاذ إجراء عبر البريد الإلكتروني مباشرةً من تطبيق على الأجهزة الجوّالة عند تثبيته بدلاً من صفحة ويب.
يمكن أن يكون ذلك مفيدًا للغاية في السيناريوهات الشائعة التالية:
قد يحاول مستخدم لم يسجّل الدخول حاليًا الوصول إلى محتوى يتطلب تسجيل الدخول. ومع ذلك، قد يكون المستخدم قد نسي كلمة المرور، وبالتالي يتم تشغيل عملية إعادة ضبط كلمة المرور. في نهاية العملية، يتوقّع المستخدم الرجوع إلى قسم التطبيق الذي كان يحاول الوصول إليه.
قد لا يتيح التطبيق الوصول إلا إلى الحسابات التي تم التحقّق منها. على سبيل المثال، قد تطلب النشرة الإخبارية من المستخدم التحقّق من بريده الإلكتروني قبل الاشتراك. سيتبع المستخدم عملية التحقّق من البريد الإلكتروني ويتوقّع الرجوع إلى التطبيق لإكمال اشتراكه.
في حالات أخرى، قد يكون المستخدم قد بدأ العملية من جهازه الجوّال ويتوقّع بعد التحقّق الرجوع إلى تطبيق الجوّال بدلاً من المتصفّح.
إنّ إمكانية تمرير الحالة من خلال عنوان URL للمتابعة هي ميزة فعّالة توفّرها خدمة Firebase المصادقة ويمكنها تحسين تجربة المستخدم بشكل كبير.
تمرير حالة عنوان URL للمتابعة في الإجراءات عبر البريد الإلكتروني
لتمرير عنوان URL للمتابعة بأمان، عليك إضافة نطاق عنوان URL كنطاق مُرخَّص:
في وحدة تحكّم Firebase، انتقِل إلى علامة التبويب الأمان > المصادقة > الإعدادات.
في قسم النطاقات المُرخَّصة ، انقر على إضافة نطاق وأضِف عنوان URL.
يجب توفير مثيل ActionCodeSettings عند إرسال رسالة إلكترونية لإعادة ضبط كلمة المرور أو رسالة إلكترونية للتحقّق. يمكن إنشاء هذا المثيل باستخدام فئة ActionCodeSettings.Builder المرتبطة التي تحتوي على الطرق التالية:
| الطريقة | الوصف |
|---|---|
setUrl(String url) |
يضبط الرابط (عنوان URL للحالة/متابعة عنوان URL) الذي له معانٍ مختلفة في سياقات مختلفة:
|
setIOSBundleId(String iOSBundleId) |
يضبط معرِّف حزمة iOS لمساعدة Firebase Authentication في تحديد ما إذا كان يجب أن ينشئ رابطًا للويب فقط أو رابطًا للأجهزة الجوّالة يتم فتحه على جهاز Apple |
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) |
يضبط اسم حزمة Android لمساعدة Firebase Authentication في تحديد ما إذا كان يجب إنشاء رابط للويب فقط أو رابط للأجهزة الجوّالة يتم فتحه على جهاز Android |
setHandleCodeInApp(boolean status) |
ما إذا كان سيتم فتح رابط لاتّخاذ إجراء عبر البريد الإلكتروني في تطبيق على الأجهزة الجوّالة أو رابط ويب أولاً. وتكون القيمة التلقائية مضبوطة على false. عند ضبط هذه السياسة على "صحيح"، سيتم إرسال رابط رمز الإجراء كرابط عام أو رابط تطبيق 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:
- إذا كنت تخطط لمعالجة هذه الروابط من تطبيق Android، يجب تحديد اسم حزمة تطبيقك في وحدة تحكّم Firebase في إعدادات المشروع.Firebase بالإضافة إلى ذلك، يجب توفير SHA-1 وSHA-256 لشهادة التطبيق.
- عليك أيضًا إعداد intent filter للرابط العميق في ملف
AndroidManifest.xml. - لمزيد من المعلومات حول هذا الموضوع، يُرجى الرجوع إلى تعليمات تلقّي روابط الاستضافة من Android.
إعداد تطبيقات iOS:
- إذا كنت تخطط لمعالجة هذه الروابط من تطبيق iOS، ستحتاج إلى إعداد نطاق الرابط Hostingكنطاق مرتبط في إمكانات تطبيقك.
- لمزيد من المعلومات حول هذا الموضوع، يُرجى الرجوع إلى تعليمات تلقّي روابط الاستضافة من iOS.
معالجة الإجراءات عبر البريد الإلكتروني في تطبيق ويب
يمكنك تحديد ما إذا كنت تريد معالجة رابط رمز الإجراء من تطبيق ويب أولاً، ثم إعادة التوجيه إلى صفحة ويب أخرى أو تطبيق على الأجهزة الجوّالة بعد الإكمال بنجاح، شرط أن يكون التطبيق على الأجهزة الجوّالة متاحًا.
يتم ذلك من خلال استدعاء setHandleCodeInApp(false) في
عنصر ActionCodeSettings.Builder. على الرغم من أنّه لا يلزم توفير معرِّف حزمة iOS أو اسم حزمة Android، فإنّ توفيرهما سيسمح للمستخدم بإعادة التوجيه إلى التطبيق المحدّد عند إكمال رمز الإجراء عبر البريد الإلكتروني.
عنوان URL للويب المستخدَم هنا هو عنوان URL الذي تم إعداده في قسم نماذج الإجراءات عبر البريد الإلكتروني. يتم توفير عنوان URL تلقائي لجميع المشاريع. يُرجى الرجوع إلى تخصيص معالِجات البريد الإلكتروني لمعرفة المزيد من المعلومات حول كيفية تخصيص معالِج الإجراءات عبر البريد الإلكتروني.
في هذه الحالة، سيكون الرابط ضمن مَعلمة طلب البحث continueUrl
رابط Hosting تكون حمولته URL المحدّد في
ActionCodeSettings عنصر.
عند معالجة الإجراءات عبر البريد الإلكتروني، مثل التحقّق من البريد الإلكتروني، يجب تحليل رمز الإجراء من مَعلمة طلب البحث oobCode من الرابط لصفحة معيّنة في التطبيق، ثم تطبيقه من خلال applyActionCode لكي يصبح التغيير ساريًا، أي ليتم التحقّق من البريد الإلكتروني.
معالجة الإجراءات عبر البريد الإلكتروني في تطبيق على الأجهزة الجوّالة
يمكنك تحديد ما إذا كنت تريد معالجة رابط رمز الإجراء ضمن تطبيقك على الأجهزة الجوّالة أولاً، شرط أن يكون مثبّتًا. إذا تم النقر على الرابط من جهاز لا يتيح استخدام التطبيق على الأجهزة الجوّالة، سيتم فتحه من صفحة ويب بدلاً من ذلك. يتم ذلك من خلال استدعاء setHandleCodeInApp(true) في
عنصر
ActionCodeSettings.Builder. يجب أيضًا تحديد اسم حزمة Android أو معرِّف حزمة iOS للتطبيق على الأجهزة الجوّالة.
عنوان URL للويب الاحتياطي المستخدَم هنا، عندما لا يتوفّر تطبيق على الأجهزة الجوّالة، هو عنوان URL الذي تم إعداده في قسم نماذج الإجراءات عبر البريد الإلكتروني. يتم توفير عنوان URL تلقائي لجميع المشاريع. يُرجى الرجوع إلى تخصيص معالِجات البريد الإلكتروني لمعرفة المزيد من المعلومات حول كيفية تخصيص معالِج الإجراءات عبر البريد الإلكتروني.
في هذه الحالة، سيكون رابط التطبيق على الأجهزة الجوّالة الذي يتم إرساله إلى المستخدم رابط Hosting تكون حمولته عنوان URL لرمز الإجراء، الذي تم إعداده في وحدة التحكّم، مع مَعلمات طلب البحث oobCode وmode وapiKey وcontinueUrl. ستكون المَعلمة الأخيرة هي URL الأصلية المحدّدة في عنصر ActionCodeSettings. يمكن تطبيق رمز الإجراء مباشرةً من تطبيق على الأجهزة الجوّالة بطريقة مشابهة لطريقة معالجته من
عملية الويب الموضّحة في
قسم تخصيص معالِجات البريد الإلكتروني.
عند معالجة الإجراءات عبر البريد الإلكتروني، مثل التحقّق من البريد الإلكتروني، يجب تحليل رمز الإجراء من مَعلمة طلب البحث oobCode من الرابط لصفحة معيّنة في التطبيق، ثم تطبيقه من خلال applyActionCode لكي يصبح التغيير ساريًا، أي ليتم التحقّق من البريد الإلكتروني.