ایجاد پیوندهای اکشن ایمیل

گاهی اوقات برنامه های موبایل نیاز به تعامل با کاربران دارند و با ارسال ایمیل از آنها خواسته می شود تا اقدامات خاصی را انجام دهند.

Firebase Client SDK این امکان را برای کاربران ارسال می‌کند که حاوی پیوندهایی هستند که می‌توانند برای بازنشانی رمز عبور، تأیید آدرس ایمیل و ورود بر اساس ایمیل استفاده کنند. این ایمیل‌های مبتنی بر الگو توسط Google ارسال می‌شوند و قابلیت سفارشی‌سازی محدودی دارند.

اگر می‌خواهید به جای آن از الگوهای ایمیل خود و سرویس تحویل ایمیل خود استفاده کنید، این صفحه نحوه استفاده از Firebase Admin SDK را برای ایجاد برنامه‌نویسی لینک‌های اقدام برای جریان‌های بالا توضیح می‌دهد که می‌توانید در ایمیل‌های کاربران خود قرار دهید.

این با مزایای زیر همراه است:

  • قالب های ایمیل را سفارشی کنید این شامل امکان افزودن سبک های جدید و برندسازی سفارشی، تغییر عبارت و لوگو، آدرس دادن به کاربران با نام کوچک به جای نام کامل و غیره است.
  • بسته به زمینه قالب های مختلف را اعمال کنید. به عنوان مثال، اگر کاربر ایمیل خود را برای اشتراک در خبرنامه تأیید می کند، ممکن است لازم باشد در محتوای ایمیل، زمینه ارائه شود. مثال دیگر ورود به لینک ایمیل است: در یک سناریو ممکن است توسط همان کاربر یا به عنوان یک دعوت توسط کاربر دیگری فعال شود. متن باید در ایمیل گنجانده شود.
  • قالب های ایمیل سفارشی شده را بومی سازی کنید.
  • امکان تولید لینک از یک محیط سرور امن.
  • امکان سفارشی کردن نحوه باز شدن پیوند، از طریق برنامه تلفن همراه یا مرورگر، و نحوه ارسال اطلاعات اضافی وضعیت و غیره.
  • امکان سفارشی کردن دامنه پیوند پویا مورد استفاده برای جریان برنامه تلفن همراه هنگام ساخت پیوند اقدام ایمیل، و حتی تعیین دامنه پیوند پویا متفاوت بسته به زمینه یا برنامه تلفن همراه.

ActionCodeSettings را راه اندازی کنید

قبل از اینکه بتوانید یک پیوند اقدام ایمیل ایجاد کنید، ممکن است لازم باشد یک نمونه ActionCodeSettings را مقداردهی اولیه کنید.

ActionCodeSettings به شما امکان می دهد وضعیت اضافی را از طریق URL ادامه دهید که پس از کلیک کاربر روی پیوند ایمیل قابل دسترسی است. این همچنین به کاربر این امکان را می دهد که پس از اتمام عمل به برنامه بازگردد. علاوه بر این، می توانید تعیین کنید که آیا پیوند اقدام ایمیل به طور مستقیم از یک برنامه تلفن همراه هنگام نصب یا از یک مرورگر مدیریت شود.

برای پیوندهایی که قرار است از طریق یک برنامه تلفن همراه باز شوند، باید Firebase Dynamic Links را فعال کنید و برخی کارها را برای شناسایی این پیوندها از برنامه تلفن همراه خود انجام دهید. به دستورالعمل‌های نحوه پیکربندی Firebase Dynamic Links برای اقدامات ایمیلی مراجعه کنید.

برای مقداردهی اولیه یک نمونه ActionCodeSettings ، داده های زیر را ارائه دهید:

پارامتر تایپ کنید شرح
url رشته

پیوند (وضعیت/ادامه URL) را تنظیم می کند که در زمینه های مختلف معانی مختلفی دارد:

  • هنگامی که پیوند در ویجت‌های اکشن وب مدیریت می‌شود، این پیوند عمیق در پارامتر query continueUrl است.
  • وقتی پیوند مستقیماً در برنامه مدیریت می‌شود، این پارامتر query continueUrl در پیوند عمیق پیوند پویا است.
iOS ({bundleId: string}|تعریف نشده) شناسه بسته را تنظیم می کند. در صورت نصب، سعی می شود پیوند را در یک برنامه اپل باز کند. برنامه باید در کنسول ثبت شود.
android ({packageName: string, installApp:boolean|undefined, minimumVersion: string|undefined}|undefined) نام بسته اندروید را تنظیم می کند. در صورت نصب، سعی می شود پیوند را در یک برنامه Android باز کند. اگر installApp تصویب شود، مشخص می‌کند که اگر دستگاه از آن پشتیبانی می‌کند و برنامه قبلاً نصب نشده است، برنامه Android را نصب کنید یا خیر. اگر این فیلد بدون packageName ارائه شود، خطایی ایجاد می‌شود که توضیح می‌دهد packageName باید همراه با این فیلد ارائه شود. اگر minimumVersion مشخص شده باشد و نسخه قدیمی‌تری از برنامه نصب شده باشد، کاربر برای ارتقای برنامه به فروشگاه Play منتقل می‌شود. برنامه اندروید باید در کنسول ثبت شود.
handleCodeInApp (بولی | تعریف نشده) آیا پیوند اقدام ایمیل ابتدا در یک برنامه تلفن همراه باز می شود یا یک پیوند وب. حالت پیش فرض غلط است. وقتی روی true تنظیم شود، پیوند کد اقدام به عنوان پیوند جهانی یا پیوند برنامه Android ارسال می‌شود و در صورت نصب توسط برنامه باز می‌شود. در صورت نادرست، کد ابتدا به ویجت وب ارسال می شود و سپس در صورت نصب به برنامه ادامه می دهد.
dynamicLinkDomain (رشته | تعریف نشده) دامنه پیوند پویا (یا زیر دامنه) را برای استفاده برای پیوند فعلی تنظیم می کند، اگر قرار است با استفاده از پیوندهای دینامیک Firebase باز شود. از آنجایی که چندین دامنه پیوند پویا را می توان در هر پروژه پیکربندی کرد، این فیلد امکان انتخاب صریح یکی را فراهم می کند. اگر هیچ کدام ارائه نشده باشد، قدیمی ترین دامنه به طور پیش فرض استفاده می شود.

مثال زیر نحوه ارسال یک پیوند تأیید ایمیل را نشان می دهد که ابتدا در یک برنامه تلفن همراه به عنوان پیوند دینامیک Firebase باز می شود (برنامه Apple 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';
getAuth()
  .generatePasswordResetLink(userEmail, actionCodeSettings)
  .then((link) => {
    // Construct password reset email template, embed the link and send
    // using custom SMTP server.
    return sendCustomPasswordResetEmail(userEmail, 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 email verification link.
const useremail = 'user@example.com';
getAuth()
  .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 useremail = 'user@example.com';
getAuth()
  .generateSignInWithEmailLink(useremail, actionCodeSettings)
  .then((link) => {
    // Construct sign-in with email link template, embed the link and
    // send using custom SMTP server.
    return sendSignInEmail(useremail, 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 با استفاده از پیوندهای ایمیل بیشتر بیاموزید. این به ارائه اطلاعات در مورد نحوه تکمیل ورود به سیستم پس از کلیک کاربر روی پیوند و هدایت مجدد به برنامه کمک می کند.