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