يمكنك تمرير الحالة من خلال عنوان URL للمتابعة عند إرسال إجراءات عبر البريد الإلكتروني لإعادة ضبط كلمات المرور أو إثبات ملكية عنوان البريد الإلكتروني للمستخدم. ويتيح ذلك للمستخدم إمكانية الرجوع إلى التطبيق بعد إكمال الإجراء. بالإضافة إلى ذلك، يمكنك تحديد ما إذا كنت تريد معالجة رابط إجراء الرسالة الإلكترونية مباشرةً من تطبيق على الجهاز الجوّال عند تثبيته بدلاً من صفحة ويب.
يمكن أن يكون هذا مفيدًا للغاية في السيناريوهات الشائعة التالية:
قد يحاول مستخدم غير مسجّل الدخول حاليًا الوصول إلى محتوى يتطلب تسجيل الدخول. ومع ذلك، قد يكون المستخدم قد نسي كلمة المرور، وبالتالي بدأ عملية إعادة ضبطها. في نهاية المسار، يتوقّع المستخدم العودة إلى قسم التطبيق الذي كان يحاول الوصول إليه.
يمكن للتطبيق أن يتيح الوصول إلى الحسابات التي تم إثبات ملكيتها فقط. على سبيل المثال، قد تتطلّب النشرة الإخبارية من المستخدم تأكيد عنوان بريده الإلكتروني قبل الاشتراك فيها. سيتبع المستخدم خطوات تأكيد عنوان البريد الإلكتروني ويتوقّع العودة إلى التطبيق لإكمال اشتراكه.
في حالات أخرى، قد يكون المستخدم قد بدأ عملية التحقّق من جهازه الجوّال ويتوقّع أن يعود إلى تطبيق الجوّال بعد إتمام عملية التحقّق بدلاً من المتصفّح.
توفّر خدمة Firebase Auth ميزة فعّالة تتيح تمرير الحالة من خلال عنوان URL للمتابعة، ما يؤدي إلى تحسين تجربة المستخدم بشكل كبير.
تمرير حالة عنوان URL للمتابعة في إجراءات البريد الإلكتروني
من أجل تمرير عنوان URL للمتابعة بشكل آمن، يجب إضافة نطاق عنوان URL كنطاق معتمَد في وحدة تحكّم Firebase. يتم ذلك في قسم المصادقة من خلال إضافة هذا النطاق إلى قائمة النطاقات المعتمَدة ضمن علامة التبويب طريقة تسجيل الدخول إذا لم يكن النطاق مُدرَجًا فيها.
يجب توفير مثيل firebase.auth.ActionCodeSettings
عند إرسال رسالة إلكترونية لإعادة ضبط كلمة المرور أو رسالة إلكترونية لتأكيد الحساب. تتطلّب هذه الواجهة المَعلمات التالية:
المَعلمة | النوع | الوصف |
---|---|---|
url |
سلسلة | تضبط هذه السمة الرابط (عنوان URL الخاص بالحالة/المتابعة) الذي له معانٍ مختلفة في سياقات مختلفة:
|
iOS |
({bundleId: string}|undefined) | تضبط هذه السمة معرّف حزمة iOS للمساعدة في تحديد ما إذا كان يجب إنشاء رابط مخصّص للويب فقط أو رابط متوافق مع الأجهزة الجوّالة يتم فتحه على جهاز Apple.Firebase Authentication |
android |
({packageName: string, installApp:boolean|undefined, minimumVersion: string|undefined}|undefined) | تضبط هذه السمة اسم حزمة Android لمساعدة Firebase Authentication في تحديد ما إذا كان يجب إنشاء رابط مخصّص للويب فقط أو رابط متوافق مع الأجهزة الجوّالة يتم فتحه على جهاز Android. |
handleCodeInApp |
(boolean|undefined) | تحديد ما إذا كان سيتم فتح رابط إجراء الرسالة الإلكترونية في تطبيق على الجهاز الجوّال أو رابط ويب أولاً القيمة التلقائية هي "خطأ". عند ضبط هذه السياسة على "صحيح"، سيتم إرسال رابط رمز الإجراء كرابط عام أو رابط تطبيق Android وسيتم فتحه بواسطة التطبيق إذا كان مثبّتًا. في الحالة غير الصحيحة، سيتم إرسال الرمز إلى التطبيق المصغّر على الويب أولاً، ثم ستتم إعادة التوجيه إلى التطبيق عند المتابعة إذا كان مثبّتًا. |
linkDomain |
(string|undefined) | عند تحديد نطاقات روابط Hosting مخصّصة لمشروع، حدِّد النطاق الذي تريد استخدامه عندما يفتح تطبيق جوّال محدّد الرابط، وإلا سيتم تلقائيًا اختيار النطاق التلقائي (على سبيل المثال، PROJECT_ID.firebaseapp.com |
dynamicLinkDomain |
(string|undefined) | تمّ الإيقاف. لا تحدّد هذه المَعلمة. |
يوضّح المثال التالي كيفية إرسال رابط تأكيد عبر البريد الإلكتروني سيتم فتحه أولاً في تطبيق على الجهاز الجوّال باستخدام النطاق المخصّص Hostingcustom-domain.com
. سيحتوي الرابط لصفحة معيّنة في التطبيق على حمولة عنوان URL للمتابعة
https://www.example.com/?email=user@example.com
.
const actionCodeSettings = {
url: 'https://www.example.com/?email=' + firebase.auth().currentUser.email,
iOS: {
bundleId: 'com.example.ios'
},
android: {
packageName: 'com.example.android',
},
handleCodeInApp: true,
// Specify a custom Hosting link domain to use. The domain must be
// configured in Firebase Hosting and owned by the project.
linkDomain: "custom-domain.com"
};
firebase.auth().currentUser.sendEmailVerification(actionCodeSettings)
.then(function() {
// Verification email sent.
})
.catch(function(error) {
// Error occurred. Inspect error.code.
});
ضبط روابط Firebase Hosting
يستخدم Firebase Authentication Firebase Hosting عند إرسال رابط من المفترض أن يتم فتحه في تطبيق على الجهاز الجوّال. لاستخدام هذه الميزة، يجب ضبط روابط الاستضافة في وحدة تحكّم Firebase.
إعداد تطبيقات Android:
- إذا كنت تخطّط للتعامل مع هذه الروابط من تطبيق Android، يجب تحديد اسم حزمة تطبيقك في إعدادات مشروع وحدة تحكّم Firebase. بالإضافة إلى ذلك، يجب تقديم خوارزميتَي SHA-1 وSHA-256 لشهادة التطبيق.
- عليك أيضًا ضبط فلتر الأهداف لرابط الصفحة في التطبيق في ملف
AndroidManifest.xml
. - لمزيد من المعلومات حول هذا الموضوع، يُرجى الرجوع إلى تعليمات تلقّي روابط استضافة تطبيقات Android.
إعداد تطبيقات iOS:
- إذا كنت تخطّط للتعامل مع هذه الروابط من تطبيق iOS، عليك ضبط نطاق الرابط Hosting كنطاق مرتبط في إمكانات تطبيقك.
- لمزيد من المعلومات حول هذا الموضوع، يُرجى الرجوع إلى تعليمات تلقّي روابط الاستضافة على iOS.
التعامل مع إجراءات البريد الإلكتروني في تطبيق ويب
يمكنك تحديد ما إذا كنت تريد التعامل مع رابط رمز الإجراء من تطبيق ويب أولاً ثم إعادة التوجيه إلى صفحة ويب أخرى أو تطبيق جوّال بعد الإكمال بنجاح، شرط أن يكون تطبيق الجوّال متاحًا.
يتم ذلك من خلال ضبط handleCodeInApp
على false
في الكائن firebase.auth.ActionCodeSettings
. على الرغم من أنّه لا يُشترط توفير معرّف حزمة iOS أو اسم حزمة Android، فإنّ توفيرهما سيسمح للمستخدم بإعادة التوجيه إلى التطبيق المحدّد عند إكمال رمز إجراء البريد الإلكتروني.
عنوان URL الخاص بالويب المستخدَم هنا هو العنوان الذي تم إعداده في قسم نماذج إجراءات الرسائل الإلكترونية. يتم توفير ملف تلقائي لجميع المشاريع. راجِع مقالة تخصيص معالجات البريد الإلكتروني لمعرفة المزيد حول كيفية تخصيص معالج إجراء البريد الإلكتروني.
في هذه الحالة، سيكون الرابط ضِمن مَعلمة طلب البحث continueUrl
هو رابط استضافة، وستكون حمولته هي URL
المحدّدة في العنصر ActionCodeSettings
.
عند التعامل مع إجراءات البريد الإلكتروني، مثل إثبات ملكية عنوان البريد الإلكتروني، يجب تحليل رمز الإجراء من مَعلمة طلب البحث oobCode
في الرابط لصفحة معيّنة ثم تطبيقه من خلال applyActionCode
لكي يسري التغيير، أي إثبات ملكية عنوان البريد الإلكتروني.
التعامل مع إجراءات البريد الإلكتروني في تطبيق على الأجهزة الجوّالة
يمكنك تحديد ما إذا كنت تريد التعامل مع رابط رمز الإجراء داخل تطبيقك على الأجهزة الجوّالة أولاً، شرط أن يكون مثبّتًا. إذا تم النقر على الرابط من جهاز لا يتوافق مع تطبيق الجوّال، سيتم فتحه من صفحة ويب بدلاً من ذلك. يتم ذلك من خلال ضبط handleCodeInApp
على true
في الكائن firebase.auth.ActionCodeSettings
. يجب أيضًا تحديد اسم حزمة Android أو رقم تعريف حزمة iOS للتطبيق على الأجهزة الجوّالة.
عنوان URL الاحتياطي للموقع الإلكتروني المستخدَم هنا، عندما لا يتوفّر تطبيق على الأجهزة الجوّالة، هو العنوان الذي تم ضبطه في قسم "نماذج إجراءات البريد الإلكتروني". يتم توفير حساب تلقائي لجميع المشاريع. راجِع مقالة تخصيص معالجات البريد الإلكتروني لمعرفة المزيد حول كيفية تخصيص معالج إجراء البريد الإلكتروني.
في هذه الحالة، سيكون رابط التطبيق على الأجهزة الجوّالة الذي يتم إرساله إلى المستخدم هو رابط Hosting
الذي يحتوي حمولته على عنوان URL لرمز الإجراء، والذي تم إعداده في Play Console، مع مَعلمات طلب البحث oobCode
وmode
وapiKey
وcontinueUrl
. سيكون هذا الأخير هو URL
الأصلي المحدّد في عنصر ActionCodeSettings
. يمكن تطبيق رمز الإجراء مباشرةً من تطبيق على الجهاز الجوّال، على غرار طريقة التعامل معه من خلال مسار الويب الموضّح في قسم تخصيص معالجات البريد الإلكتروني.
عند التعامل مع إجراءات البريد الإلكتروني، مثل إثبات ملكية عنوان البريد الإلكتروني، يجب تحليل رمز الإجراء من مَعلمة طلب البحث oobCode
في الرابط لصفحة معيّنة ثم تطبيقه من خلال applyActionCode
لكي يسري التغيير، أي إثبات ملكية عنوان البريد الإلكتروني.