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

إنشاء روابط إجراءات البريد الإلكتروني

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

توفر حزم SDK Admin في Firebase القدرة على إرسال رسائل بريد إلكتروني للمستخدمين تحتوي على روابط يمكنهم استخدامها لإعادة تعيين كلمة المرور ، والتحقق من عنوان البريد الإلكتروني ، وتسجيل الدخول عبر البريد الإلكتروني. يتم إرسال رسائل البريد الإلكتروني هذه بواسطة Google ولديها إمكانية تخصيص محدودة.

إذا كنت ترغب في استخدام قوالب البريد الإلكتروني الخاصة بك وخدمة توصيل البريد الإلكتروني الخاصة بك بدلاً من ذلك ، فيمكنك استخدام Firebase Admin SDK لإنشاء روابط الإجراءات للتدفقات أعلاه برمجيًا ، والتي يمكنك تضمينها في رسائل البريد الإلكتروني للمستخدمين.

يأتي هذا مع الفوائد التالية:

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

تهيئة ActionCodeSettings

قبل أن تتمكن من إنشاء ارتباط إجراء بالبريد الإلكتروني ، قد تحتاج إلى تهيئة مثيل ActionCodeSettings .

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

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

لتهيئة نسخة ActionCodeSettings ، قم بتوفير البيانات التالية:

معامل نوع وصف
url خيط

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

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

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

Node.js

 const actionCodeSettings = {
  // URL you want to redirect back to. The domain (www.example.com) for
  // this URL must be whitelisted in the Firebase Console.
  url: 'https://www.example.com/checkout?cartId=1234',
  // This must be true for email link sign-in.
  handleCodeInApp: true,
  iOS: {
    bundleId: 'com.example.ios'
  },
  android: {
    packageName: 'com.example.android',
    installApp: true,
    minimumVersion: '12'
  },
  // FDL custom domain.
  dynamicLinkDomain: 'coolapp.page.link'
};
 

جافا

 ActionCodeSettings actionCodeSettings = ActionCodeSettings.builder()
    .setUrl("https://www.example.com/checkout?cartId=1234")
    .setHandleCodeInApp(true)
    .setIosBundleId("com.example.ios")
    .setAndroidPackageName("com.example.android")
    .setAndroidInstallApp(true)
    .setAndroidMinimumVersion("12")
    .setDynamicLinkDomain("coolapp.page.link")
    .build();
 

بيثون

 action_code_settings = auth.ActionCodeSettings(
    url='https://www.example.com/checkout?cartId=1234',
    handle_code_in_app=True,
    ios_bundle_id='com.example.ios',
    android_package_name='com.example.android',
    android_install_app=True,
    android_minimum_version='12',
    dynamic_link_domain='coolapp.page.link',
)
 

اذهب

 actionCodeSettings := &auth.ActionCodeSettings{
	URL:                   "https://www.example.com/checkout?cartId=1234",
	HandleCodeInApp:       true,
	IOSBundleID:           "com.example.ios",
	AndroidPackageName:    "com.example.android",
	AndroidInstallApp:     true,
	AndroidMinimumVersion: "12",
	DynamicLinkDomain:     "coolapp.page.link",
}
 

ج #

 var actionCodeSettings = new ActionCodeSettings()
{
    Url = "https://www.example.com/checkout?cartId=1234",
    HandleCodeInApp = true,
    IosBundleId = "com.example.ios",
    AndroidPackageName = "com.example.android",
    AndroidInstallApp = true,
    AndroidMinimumVersion = "12",
    DynamicLinkDomain = "coolapp.page.link",
};
 

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

لإنشاء ارتباط إعادة تعيين كلمة المرور ، قم بتوفير البريد الإلكتروني للمستخدم الحالي وكائن ActionCodeSettings اختياري. ستحل العملية باستخدام رابط إجراء البريد الإلكتروني. يجب أن ينتمي البريد الإلكتروني المستخدم إلى مستخدم حالي.

Node.js

 // Admin SDK API to generate the password reset link.
const userEmail = 'user@example.com';
admin.auth().generatePasswordResetLink(userEmail, actionCodeSettings)
  .then((link) => {
    // Construct password reset email template, embed the link and send
    // using custom SMTP server.
    return sendCustomPasswordResetEmail(email, displayName, link);
  })
  .catch((error) => {
    // Some error occurred.
  });
 

جافا

 String email = "user@example.com";
try {
  String link = FirebaseAuth.getInstance().generatePasswordResetLink(
      email, actionCodeSettings);
  // Construct email verification template, embed the link and send
  // using custom SMTP server.
  sendCustomEmail(email, displayName, link);
} catch (FirebaseAuthException e) {
  System.out.println("Error generating email link: " + e.getMessage());
}
 

بيثون

 email = 'user@example.com'
link = auth.generate_password_reset_link(email, action_code_settings)
# Construct password reset email from a template embedding the link, and send
# using a custom SMTP server.
send_custom_email(email, link)
 

اذهب

 email := "user@example.com"
link, err := client.PasswordResetLinkWithSettings(ctx, email, actionCodeSettings)
if err != nil {
	log.Fatalf("error generating email link: %v\n", err)
}

// Construct password reset template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link)
 

ج #

 var email = "user@example.com";
var link = await FirebaseAuth.DefaultInstance.GeneratePasswordResetLinkAsync(
    email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
SendCustomEmail(email, displayName, link);
 

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

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

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

Node.js

 // Admin SDK API to generate the password reset link.
const email = 'user@example.com';
admin.auth().generatePasswordResetLink(email, actionCodeSettings)
  .then((link) => {
    // Construct password reset email template, embed the link and send
    // using custom SMTP server.
    return sendCustomPasswordResetEmail(email, displayName, link);
  })
  .catch((error) => {
    // Some error occurred.
  });

// Admin SDK API to generate the email verification link.
const useremail = 'user@example.com';
admin.auth().generateEmailVerificationLink(useremail, actionCodeSettings)
  .then((link) => {
    // Construct email verification template, embed the link and send
    // using custom SMTP server.
    return sendCustomVerificationEmail(useremail, displayName, link);
  })
  .catch((error) => {
    // Some error occurred.
  });
 

جافا

 String email = "user@example.com";
try {
  String link = FirebaseAuth.getInstance().generateEmailVerificationLink(
      email, actionCodeSettings);
  // Construct email verification template, embed the link and send
  // using custom SMTP server.
  sendCustomEmail(email, displayName, link);
} catch (FirebaseAuthException e) {
  System.out.println("Error generating email link: " + e.getMessage());
}
 

بيثون

 email = 'user@example.com'
link = auth.generate_email_verification_link(email, action_code_settings)
# Construct email from a template embedding the link, and send
# using a custom SMTP server.
send_custom_email(email, link)
 

اذهب

 email := "user@example.com"
link, err := client.EmailVerificationLinkWithSettings(ctx, email, actionCodeSettings)
if err != nil {
	log.Fatalf("error generating email link: %v\n", err)
}

// Construct email verification template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link)
 

ج #

 var email = "user@example.com";
var link = await FirebaseAuth.DefaultInstance.GenerateEmailVerificationLinkAsync(
    email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
SendCustomEmail(email, displayName, link);
 

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

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

قبل أن تتمكن من مصادقة المستخدمين بتسجيل الدخول باستخدام رابط البريد الإلكتروني ، ستحتاج إلى تمكين تسجيل الدخول باستخدام رابط البريد الإلكتروني لمشروع Firebase.

لإنشاء ارتباط تسجيل دخول ، قدّم بريد المستخدم الإلكتروني وكائن ActionCodeSettings . مطلوب كائن ActionCodeSettings في هذه الحالة لتوفير معلومات حول مكان إعادة المستخدم بعد النقر فوق الارتباط لإكمال تسجيل الدخول. ستحل العملية باستخدام رابط إجراء البريد الإلكتروني.

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

Node.js

 // Admin SDK API to generate the sign in with email link.
const usremail = 'user@example.com';
admin.auth().generateSignInWithEmailLink(usremail, actionCodeSettings)
  .then((link) => {
    // Construct sign-in with email link template, embed the link and
    // send using custom SMTP server.
    return sendSignInEmail(usremail, displayName, link);
  })
  .catch((error) => {
    // Some error occurred.
  });
 

جافا

 String email = "user@example.com";
try {
  String link = FirebaseAuth.getInstance().generateSignInWithEmailLink(
      email, actionCodeSettings);
  // Construct email verification template, embed the link and send
  // using custom SMTP server.
  sendCustomEmail(email, displayName, link);
} catch (FirebaseAuthException e) {
  System.out.println("Error generating email link: " + e.getMessage());
}
 

بيثون

 email = 'user@example.com'
link = auth.generate_sign_in_with_email_link(email, action_code_settings)
# Construct email from a template embedding the link, and send
# using a custom SMTP server.
send_custom_email(email, link)
 

اذهب

 email := "user@example.com"
link, err := client.EmailSignInLink(ctx, email, actionCodeSettings)
if err != nil {
	log.Fatalf("error generating email link: %v\n", err)
}

// Construct sign-in with email link template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link)
 

ج #

 var email = "user@example.com";
var link = await FirebaseAuth.DefaultInstance.GenerateSignInWithEmailLinkAsync(
    email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
SendCustomEmail(email, displayName, link);
 

بعد إنشاء الرابط ، يمكن إدراجه في البريد الإلكتروني المخصص لتسجيل الدخول ثم إرساله بالبريد الإلكتروني إلى المستخدم المقابل باستخدام خادم SMTP مخصص.

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