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

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

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

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

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

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

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

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

من أجل تمرير عنوان URL للمتابعة بشكل آمن ، يجب إضافة نطاق عنوان URL كمجال معتمد في وحدة تحكم Firebase . يتم ذلك في قسم المصادقة عن طريق إضافة هذا المجال إلى قائمة المجالات المصرح بها ضمن علامة تبويب طريقة تسجيل الدخول إذا لم تكن موجودة بالفعل.

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

معامل يكتب وصف
url سلسلة

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

  • عندما يتم التعامل مع الرابط في أدوات إجراءات الويب ، يكون هذا هو الرابط لموضع معين في معامِل استعلام continueUrl .
  • عندما يتم التعامل مع الرابط في التطبيق مباشرةً ، فهذه هي معلمة استعلام continueUrl في الرابط العميق للرابط الديناميكي.
iOS ({bundleId: string} | غير محدد) يضبط معرف حزمة iOS. سيحاول هذا فتح الرابط في تطبيق iOS إذا كان مثبتًا. يجب تسجيل تطبيق iOS في وحدة التحكم.
android ({packageName: string، installApp: منطقية | غير محدد ، الحد الأدنى للإصدار: string | undefined} | غير محدد) يعيّن اسم حزمة Android. سيحاول هذا فتح الرابط في تطبيق Android إذا كان مثبتًا. إذا تم تمرير installApp ، فإنه يحدد ما إذا كان سيتم تثبيت تطبيق Android إذا كان الجهاز يدعمه ولم يكن التطبيق مثبتًا بالفعل. إذا تم توفير هذا الحقل بدون اسم packageName ، فسيتم طرح خطأ يوضح أنه يجب توفير اسم packageName بالاقتران مع هذا الحقل. إذا تم تحديد الإصدار minimumVersion ، وتم تثبيت إصدار أقدم من التطبيق ، فسيتم نقل المستخدم إلى متجر Play لترقية التطبيق. يجب تسجيل تطبيق Android في وحدة التحكم.
handleCodeInApp (قيمة منطقية | غير محدد) ما إذا كان سيتم فتح ارتباط إجراء البريد الإلكتروني في تطبيق جوال أو رابط ويب أولاً. الافتراضي هو خطأ. عند التعيين على "صحيح" ، سيتم إرسال رابط رمز الإجراء كرابط عام أو رابط تطبيق Android وسيفتحه التطبيق إذا كان مثبتًا. في الحالة الخاطئة ، سيتم إرسال الرمز إلى عنصر واجهة الويب أولاً ، وبعد ذلك سيتم إعادة التوجيه إلى التطبيق إذا تم تثبيته.
dynamicLinkDomain (سلسلة | غير محدد) يعيّن نطاق الارتباط الديناميكي (أو النطاق الفرعي) لاستخدامه للرابط الحالي إذا كان سيتم فتحه باستخدام روابط Firebase الديناميكية. نظرًا لأنه يمكن تكوين مجالات ارتباط ديناميكي متعددة لكل مشروع ، يوفر هذا الحقل القدرة على اختيار واحد بشكل صريح. إذا لم يتم توفير أي شيء ، فسيتم استخدام المجال الأول افتراضيًا.

يوضح المثال التالي كيفية إرسال رابط التحقق من البريد الإلكتروني الذي سيتم فتحه في تطبيق جوال أولاً باعتباره رابط Firebase الديناميكي باستخدام نطاق الارتباط الديناميكي المخصص example.page.link (تطبيق iOS com.example.ios أو تطبيق Android com.example.android حيث سيتم تثبيت التطبيق إذا لم يكن مثبتًا بالفعل والحد الأدنى للإصدار هو 12 ). سيحتوي الارتباط العميق على حمل عنوان URL للمتابعة https://www.example.com/?email=user@example.com .

var actionCodeSettings = {
  url: 'https://www.example.com/?email=' + firebase.auth().currentUser.email,
  iOS: {
    bundleId: 'com.example.ios'
  },
  android: {
    packageName: 'com.example.android',
    installApp: true,
    minimumVersion: '12'
  },
  handleCodeInApp: true,
  // When multiple custom dynamic link domains are defined, specify which
  // one to use.
  dynamicLinkDomain: "example.page.link"
};
firebase.auth().currentUser.sendEmailVerification(actionCodeSettings)
  .then(function() {
    // Verification email sent.
  })
  .catch(function(error) {
    // Error occurred. Inspect error.code.
  });

يستخدم Firebase Auth روابط Firebase الديناميكية عند إرسال رابط من المفترض أن يتم فتحه في تطبيق جوال. لاستخدام هذه الميزة ، يجب تكوين الروابط الديناميكية في Firebase Console.

  1. تفعيل روابط Firebase الديناميكية:

    1. في وحدة تحكم Firebase ، افتح قسم الروابط الديناميكية .
    2. إذا لم تكن قد وافقت بعد على شروط الروابط الديناميكية وأنشأت نطاق روابط ديناميكية ، فافعل ذلك الآن.

      إذا كنت قد أنشأت بالفعل مجال روابط ديناميكية ، فقم بتدوين ذلك. عادة ما يبدو مجال الروابط الديناميكية مثل المثال التالي:

      example.page.link

      ستحتاج إلى هذه القيمة عند تكوين تطبيق Apple أو Android لاعتراض الرابط الوارد.

  2. تكوين تطبيقات Android:

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

    1. إذا كنت تخطط للتعامل مع هذه الروابط من تطبيق iOS الخاص بك ، فيجب تحديد معرف حزمة iOS في إعدادات مشروع Firebase Console. بالإضافة إلى ذلك ، يجب أيضًا تحديد معرف متجر التطبيقات ومعرف فريق مطوري Apple.
    2. ستحتاج أيضًا إلى تكوين مجال الارتباط العالمي FDL كمجال مرتبط في إمكانات التطبيق الخاص بك.
    3. إذا كنت تخطط لتوزيع تطبيقك على إصدارات iOS 8 وما دونها ، فستحتاج إلى تعيين معرف حزمة iOS الخاص بك كمخطط مخصص لعناوين URL الواردة.
    4. لمزيد من المعلومات حول هذا الأمر ، راجع تعليمات تلقي الروابط الديناميكية لنظام iOS .

التعامل مع إجراءات البريد الإلكتروني في تطبيق الويب

يمكنك تحديد ما إذا كنت تريد التعامل مع ارتباط رمز الإجراء من تطبيق ويب أولاً ثم إعادة التوجيه إلى صفحة ويب أخرى أو تطبيق جوال آخر بعد الانتهاء بنجاح ، بشرط أن يكون تطبيق الهاتف متاحًا. يتم ذلك عن طريق ضبط handleCodeInApp على false في كائن firebase.auth.ActionCodeSettings . على الرغم من أن معرف حزمة iOS أو اسم حزمة Android غير مطلوبين ، فإن توفيرهما سيسمح للمستخدم بإعادة التوجيه مرة أخرى إلى التطبيق المحدد عند إكمال رمز إجراء البريد الإلكتروني.

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

في هذه الحالة ، سيكون الارتباط الموجود داخل معلمة استعلام continueUrl عبارة عن ارتباط FDL حمولته هي URL المحدد في كائن ActionCodeSettings . بينما يمكنك اعتراض الارتباط الوارد من تطبيقك والتعامل معه دون أي تبعية إضافية ، فإننا نوصي باستخدام مكتبة عميل FDL لتحليل الارتباط العميق نيابةً عنك.

عند التعامل مع إجراءات البريد الإلكتروني مثل التحقق من البريد الإلكتروني ، يجب تحليل رمز الإجراء من معلمة استعلام oobCode من الرابط العميق ثم تطبيقه عبر applyActionCode حتى يسري التغيير ، أي يتم التحقق من البريد الإلكتروني.

التعامل مع إجراءات البريد الإلكتروني في تطبيق الهاتف المحمول

يمكنك تحديد ما إذا كنت تريد التعامل مع ارتباط رمز الإجراء داخل تطبيق الهاتف المحمول الخاص بك أولاً ، بشرط تثبيته. مع تطبيقات Android ، لديك أيضًا القدرة على التحديد عبر android.installApp أن التطبيق سيتم تثبيته إذا كان الجهاز يدعمه ولم يتم تثبيته بالفعل. إذا تم النقر فوق الارتباط من جهاز لا يدعم تطبيق الهاتف المحمول ، فسيتم فتحه من صفحة ويب بدلاً من ذلك. يتم ذلك عن طريق ضبط handleCodeInApp على true في كائن firebase.auth.ActionCodeSettings . يجب أيضًا تحديد اسم حزمة Android لتطبيق الهاتف المحمول أو معرف حزمة iOS.

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

في هذه الحالة ، سيكون رابط تطبيق الهاتف المحمول المرسل إلى المستخدم عبارة عن رابط FDL حمولته هي عنوان URL الخاص برمز الإجراء ، الذي تم تكوينه في وحدة التحكم ، مع معلمات الاستعلام oobCode ، و mode ، و apiKey ، و continueUrl . سيكون الأخير هو URL الأصلي المحدد في كائن ActionCodeSettings . بينما يمكنك اعتراض الارتباط الوارد من تطبيقك والتعامل معه دون أي تبعية إضافية ، فإننا نوصي باستخدام مكتبة عميل FDL لتحليل الارتباط العميق نيابةً عنك. يمكن تطبيق رمز الإجراء مباشرة من تطبيق جوال مشابه لكيفية معالجته من تدفق الويب الموضح في قسم تخصيص معالجات البريد الإلكتروني .

عند التعامل مع إجراءات البريد الإلكتروني مثل التحقق من البريد الإلكتروني ، يجب تحليل رمز الإجراء من معلمة استعلام oobCode من الرابط العميق ثم تطبيقه عبر applyActionCode حتى يسري التغيير ، أي يتم التحقق من البريد الإلكتروني.