Google is committed to advancing racial equity for Black communities. See how.
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

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

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

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

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

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

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

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

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

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

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

سويفت

معامل اكتب وصف
URL خيط

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

  • عندما يتم التعامل مع الارتباط في أدوات إجراءات الويب ، يكون هذا هو الرابط لموضع معين في continueUrl استعلام continueUrl Url.
  • عندما يتم التعامل مع الرابط في التطبيق مباشرةً ، فهذه هي معلمة استعلام continueUrl في الرابط العميق للرابط الديناميكي.
iOSBundleID خيط يضبط معرف حزمة iOS. سيحاول هذا فتح الرابط في تطبيق iOS إذا كان مثبتًا. يجب تسجيل تطبيق iOS في وحدة التحكم. إذا لم يتم توفير معرّف الحزمة ، فسيتم تعيين قيمة هذا الحقل على معرّف الحزمة للحزمة الرئيسية للتطبيق.
androidPackageName خيط يعيّن اسم حزمة Android. سيحاول هذا فتح الرابط في تطبيق android إذا كان مثبتًا.
androidInstallIfNotAvailable منطقي يحدد ما إذا كان سيتم تثبيت تطبيق Android إذا كان الجهاز يدعمه ولم يكن التطبيق مثبتًا بالفعل. إذا تم توفير هذا الحقل بدون اسم packageName ، فسيتم طرح خطأ يوضح أنه يجب توفير اسم الحزمة بالتزامن مع هذا الحقل.
androidMinimumVersion خيط الحد الأدنى من إصدار التطبيق المدعوم في هذا التدفق. إذا تم تحديد الإصدار الأدنى ، وتم تثبيت إصدار أقدم من التطبيق ، فسيتم نقل المستخدم إلى متجر Play لترقية التطبيق. يجب تسجيل تطبيق Android في وحدة التحكم.
handleCodeInApp منطقي ما إذا كان سيتم فتح ارتباط إجراء البريد الإلكتروني في تطبيق جوال أو رابط ويب أولاً. الافتراضي هو خطأ. عند التعيين على "صحيح" ، سيتم إرسال رابط رمز الإجراء كرابط عالمي أو رابط تطبيق Android وسيفتحه التطبيق إذا كان مثبتًا. في الحالة الخاطئة ، سيتم إرسال الرمز إلى عنصر واجهة الويب أولاً ، وبعد ذلك سيتم إعادة التوجيه إلى التطبيق إذا تم تثبيته.
dynamicLinkDomain خيط يضبط نطاق الرابط الديناميكي (أو النطاق الفرعي) لاستخدامه للرابط الحالي إذا كان سيتم فتحه باستخدام روابط Firebase الديناميكية. نظرًا لأنه يمكن تكوين نطاقات ارتباط ديناميكي متعددة لكل مشروع ، يوفر هذا الحقل القدرة على اختيار واحد بشكل صريح. إذا لم يتم توفير أي شيء ، فسيتم استخدام المجال الأول افتراضيًا.

ج موضوعية

معامل اكتب وصف
URL NSString

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

  • عندما يتم التعامل مع الارتباط في أدوات إجراءات الويب ، يكون هذا هو الرابط لموضع معين في continueUrl استعلام continueUrl .
  • عندما يتم التعامل مع الرابط في التطبيق مباشرةً ، فهذه هي معلمة استعلام continueUrl في الرابط العميق للرابط الديناميكي.
iOSBundleID NSString يضبط معرف حزمة iOS. سيحاول هذا فتح الرابط في تطبيق iOS إذا كان مثبتًا. يجب تسجيل تطبيق iOS في وحدة التحكم.
androidPackageName NSString يعيّن اسم حزمة Android. سيحاول هذا فتح الرابط في تطبيق android إذا كان مثبتًا.
androidInstallIfNotAvailable بول يحدد ما إذا كان سيتم تثبيت تطبيق Android إذا كان الجهاز يدعمه ولم يكن التطبيق مثبتًا بالفعل. إذا تم توفير هذا الحقل بدون اسم packageName ، فسيتم طرح خطأ يوضح أنه يجب توفير اسم الحزمة بالتزامن مع هذا الحقل.
androidMinimumVersion NSString الحد الأدنى من إصدار التطبيق المدعوم في هذا التدفق. إذا تم تحديد الإصدار الأدنى ، وتم تثبيت إصدار أقدم من التطبيق ، فسيتم نقل المستخدم إلى متجر Play لترقية التطبيق. يجب تسجيل تطبيق Android في وحدة التحكم.
handleCodeInApp بول ما إذا كان سيتم فتح ارتباط إجراء البريد الإلكتروني في تطبيق جوال أو رابط ويب أولاً. الافتراضي هو خطأ. عند التعيين على "صحيح" ، سيتم إرسال رابط رمز الإجراء كرابط عالمي أو رابط تطبيق Android وسيفتحه التطبيق إذا كان مثبتًا. في الحالة الخاطئة ، سيتم إرسال الرمز إلى عنصر واجهة الويب أولاً ، وبعد ذلك سيتم إعادة التوجيه إلى التطبيق إذا تم تثبيته.
dynamicLinkDomain NSString يضبط نطاق الرابط الديناميكي (أو النطاق الفرعي) لاستخدامه للرابط الحالي إذا كان سيتم فتحه باستخدام روابط 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 =  ActionCodeSettings.init()
actionCodeSettings.canHandleInApp = true
let user = Auth.auth().currentUser()
actionCodeSettings.URL =
    String(format: "https://www.example.com/?email=%@", user.email)
actionCodeSettings.iOSbundleID = Bundle.main.bundleIdentifier!
actionCodeSettings.setAndroidPakageName("com.example.android",
                                         installIfNotAvailable:true,
                                         minumumVersion:"12")
// When multiple custom dynamic link domains are defined, specify which one to use.
actionCodeSettings.dynamicLinkDomain = "example.page.link"
user.sendEmailVerification(withActionCodeSettings:actionCodeSettings { error in
  if error {
    // Error occurred. Inspect error.code and handle error.
    return
  }
  // Email verification sent.
})

ج موضوعية

 FIRActionCodeSettings *actionCodeSettings = [[FIRActionCodeSettings alloc] init];
 actionCodeSettings.handleCodeInApp = YES;
 FIRUser *user = [FIRAuth auth].currentUser;
 NSString *urlString =
     [NSString stringWithFormat:@"https://www.example.com/?email=%@", user.email];
 actionCodeSettings.URL = [NSURL URLWithString:urlString];
 actionCodeSettings.iOSBundleID = [NSBundle mainBundle].bundleIdentifier;
 // When multiple custom dynamic link domains are defined, specify which one to use.
 actionCodeSettings.dynamicLinkDomain = @"example.page.link";
 [actionCodeSettings setAndroidPackageName:@"com.example.android"
                     installIfNotAvailable:YES
                            minimumVersion:'12'];
 [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings
                                        completion:^(NSError *_Nullable error) {
   if (error) {
     // Error occurred. Inspect error.code and handle error.
     return;
   }
   // Email verification sent.
 }];

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

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

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

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

      example.page.link

      ستحتاج إلى هذه القيمة عند تكوين تطبيق iOS أو 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 في FIRActionCodeSettings (Obj-C) أو ActionCodeSettings (Swift). على الرغم من أن معرف حزمة iOS أو اسم حزمة Android غير مطلوبين ، فإن توفيرهما سيسمح للمستخدم بإعادة التوجيه مرة أخرى إلى التطبيق المحدد عند إكمال رمز إجراء البريد الإلكتروني.

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

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

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

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

يمكنك تحديد ما إذا كنت تريد التعامل مع ارتباط رمز الإجراء داخل تطبيق الهاتف المحمول أولاً ، بشرط تثبيته. مع تطبيقات Android ، لديك أيضًا القدرة على التحديد عبر androidInstallIfNotAvailable أنه سيتم تثبيت التطبيق إذا كان الجهاز يدعمه ولم يتم تثبيته بالفعل. إذا تم النقر فوق الارتباط من جهاز لا يدعم تطبيق الهاتف المحمول ، فسيتم فتحه من صفحة ويب بدلاً من ذلك. يتم ذلك عن طريق تعيين handleCodeInApp إلى true في FIRActionCodeSettings (Obj-C) أو ActionCodeSettings (Swift). يجب أيضًا تحديد اسم حزمة Android لتطبيق الهاتف المحمول أو معرف حزمة iOS. عنوان URL الاحتياطي المستخدم هنا ، عندما لا يتوفر تطبيق جوال ، هو الذي تم تكوينه في قسم قوالب إجراءات البريد الإلكتروني. يتم توفير واحد افتراضي لجميع المشاريع. راجع تخصيص معالجات البريد الإلكتروني لمعرفة المزيد حول كيفية تخصيص معالج إجراء البريد الإلكتروني.

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

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