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

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

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

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

این امر مزایای زیر را به همراه دارد:

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

مقداردهی اولیه تنظیمات اکشن‌کد

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

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

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

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

پارامتر نوع توضیحات
url رشته

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

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

مثال زیر نحوه ارسال لینک تأیید ایمیل را نشان می‌دهد که ابتدا در یک برنامه تلفن همراه باز می‌شود. لینک عمیق حاوی payload ادامه URL https://www.example.com/checkout?cartId=1234 خواهد بود. دامنه لینک سفارشی Hosting مورد استفاده custom-domain.com است که باید برای استفاده با Firebase Hosting پیکربندی شود.

نود جی اس

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',
  },
  // The domain must be configured in Firebase Hosting and owned by the project.
  linkDomain: 'custom-domain.com',
};

جاوا

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",
    LinkDomain = "coolapp.page.link",
};

برای کسب اطلاعات بیشتر، به بخش «ارسال وضعیت در اقدامات ایمیل» مراجعه کنید.

ایجاد لینک ایمیل بازنشانی رمز عبور

برای ایجاد لینک تنظیم مجدد رمز عبور، ایمیل کاربر فعلی و یک شیء ActionCodeSettings اختیاری را ارائه دهید. عملیات با لینک اکشن ایمیل انجام خواهد شد. ایمیل استفاده شده باید متعلق به یک کاربر فعلی باشد.

نود جی اس

// 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 اختیاری را ارائه دهید. عملیات با لینک اقدام ایمیل انجام خواهد شد. ایمیل مورد استفاده باید متعلق به یک کاربر موجود باشد.

نود جی اس

// 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 برای ارائه اطلاعاتی در مورد محل بازگشت کاربر پس از کلیک بر روی لینک برای تکمیل ورود، مورد نیاز است. این عملیات با لینک اقدام ایمیل انجام خواهد شد.

برخلاف بازنشانی رمز عبور و تأیید ایمیل، ایمیل استفاده شده لزوماً نباید متعلق به یک کاربر موجود باشد، زیرا این عملیات می‌تواند برای ثبت نام کاربران جدید در برنامه شما از طریق لینک ایمیل استفاده شود.

نود جی اس

// 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 با استفاده از لینک‌های ایمیل بیشتر بدانید. این به شما کمک می‌کند تا اطلاعاتی در مورد نحوه تکمیل ورود به سیستم پس از کلیک کاربر روی لینک و هدایت مجدد به برنامه ارائه دهید.