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

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

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

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

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

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

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

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

من أجل تمرير عنوان URL للمتابعة بشكل آمن، عليك إضافة نطاق عنوان URL كنطاق معتمَد:

  1. في وحدة تحكّم Firebase، انتقِل إلى علامة التبويب الإعدادات ضمن الأمان > المصادقة.

  2. في قسم النطاقات المعتمَدة، انقر على إضافة نطاق وأضِف عنوان URL.

يجب توفير مثيل firebase.auth.ActionCodeSettings عند إرسال رسالة إلكترونية لإعادة ضبط كلمة المرور أو رسالة إلكترونية لتأكيد الحساب. تتطلّب واجهة برمجة التطبيقات هذه المَعلمات التالية:

المَعلمة النوع الوصف
url سلسلة

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

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

  1. إعداد تطبيقات Android:

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

    1. إذا كنت تخطّط للتعامل مع هذه الروابط من تطبيق iOS، عليك ضبط نطاق رابط Hosting كنطاق مرتبط في إمكانات تطبيقك.
    2. لمزيد من المعلومات حول هذا الموضوع، يُرجى الرجوع إلى تعليمات تلقّي روابط الاستضافة على 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 لكي يسري التغيير، أي إثبات ملكية عنوان البريد الإلكتروني.