Check out what’s new from Firebase at Google I/O 2022. Learn more

יצירת קישורי פעולה בדוא"ל

אפליקציות לנייד צריכות לפעמים ליצור אינטראקציה עם משתמשים ולבקש מהם לבצע פעולות מסוימות על ידי שליחת אימיילים.

ערכות ה- SDK של Firebase Admin מספקות את היכולת לשלוח למשתמשים אימיילים המכילים קישורים שהם יכולים להשתמש בהם לאיפוס סיסמאות, אימות כתובת אימייל וכניסה מבוססת דוא"ל. הודעות דוא"ל אלו נשלחות על ידי Google ויש להן יכולת התאמה אישית מוגבלת.

אם אתה רוצה במקום זאת להשתמש בתבניות דוא"ל משלך ובשירות שליחת דוא"ל משלך, תוכל להשתמש ב-Firebase Admin SDK כדי ליצור באופן פרוגרמטי את קישורי הפעולה עבור הזרימות שלמעלה, אותם תוכל לכלול בהודעות דוא"ל למשתמשים שלך.

זה מגיע עם היתרונות הבאים:

  • התאם אישית תבניות דואר אלקטרוני. זה כולל את היכולת להוסיף סגנונות חדשים ומיתוג מותאם אישית, לשנות ניסוח ולוגו, לפנות למשתמשים בשם פרטי במקום בשם מלא וכו'.
  • החל תבניות שונות בהתאם להקשר. לדוגמה, אם המשתמש מאמת את הדוא"ל שלו כדי להירשם לניוזלטר, ייתכן שיהיה צורך לספק את ההקשר בתוכן האימייל. דוגמה נוספת היא כניסה לקישור אימייל: בתרחיש אחד זה עשוי להיות מופעל על ידי אותו משתמש, או כהזמנה על ידי משתמש אחר. ההקשר יצטרך להיכלל בדוא"ל.
  • התאם לוקליזציה של תבניות דוא"ל מותאמות אישית.
  • יכולת ליצור את הקישור מסביבת שרת מאובטחת.
  • יכולת להתאים אישית את אופן פתיחת הקישור, דרך אפליקציה לנייד או דפדפן, וכיצד להעביר מידע נוסף על מצב וכו'.
  • יכולת להתאים אישית את תחום הקישור הדינמי המשמש לזרימת אפליקציות לנייד בעת בניית קישור פעולת הדוא"ל, ואפילו לציין תחום קישור דינמי שונה בהתאם להקשר או לאפליקציה לנייד.

אתחול ActionCodeSettings

לפני שתוכל ליצור קישור לפעולה בדוא"ל, ייתכן שיהיה עליך לאתחל מופע ActionCodeSettings .

ActionCodeSettings מאפשרות לך להעביר מצב נוסף באמצעות כתובת URL המשך, הנגישה לאחר שהמשתמש לוחץ על קישור הדוא"ל. זה גם מספק למשתמש את היכולת לחזור לאפליקציה לאחר השלמת הפעולה. בנוסף, ניתן לציין אם לטפל בקישור פעולת המייל ישירות מאפליקציה סלולרית כשהיא מותקנת או מדפדפן.

עבור קישורים שנועדו להיפתח באמצעות אפליקציה לנייד, תצטרך להפעיל את Firebase Dynamic Links ולבצע כמה משימות כדי לזהות קישורים אלה מהאפליקציה לנייד שלך. עיין בהוראות כיצד להגדיר את Firebase Dynamic Links עבור פעולות אימייל.

כדי לאתחל מופע ActionCodeSettings , ספק את הנתונים הבאים:

פָּרָמֶטֶר סוּג תיאור
url חוּט

מגדיר את הקישור (מצב/המשך כתובת URL) שיש לו משמעויות שונות בהקשרים שונים:

  • כאשר הקישור מטופל בווידג'טים לפעולת האינטרנט, זהו הקישור העמוק בפרמטר השאילתה continueUrl .
  • כאשר הקישור מטופל ישירות באפליקציה, זהו פרמטר השאילתה continueUrl בקישור העמוק של הקישור הדינמי.
iOS ({bundleId: string}|לא מוגדר) מגדיר את מזהה החבילה. זה ינסה לפתוח את הקישור באפליקציית אפל אם היא מותקנת. האפליקציה צריכה להיות רשומה בקונסולה.
android ({packageName: string, installApp:boolean|undefined, minimumVersion: string|undefined}|לא מוגדר) מגדיר את שם החבילה של Android. זה ינסה לפתוח את הקישור באפליקציית אנדרואיד אם היא מותקנת. אם installApp עבר, הוא מציין אם להתקין את אפליקציית Android אם המכשיר תומך בה והאפליקציה לא מותקנת כבר. אם שדה זה מסופק ללא שם packageName , תופיע שגיאה המסבירה כי יש לספק את שם packageName בשילוב עם שדה זה. אם צוין minimumVersion , ומותקנת גרסה ישנה יותר של האפליקציה, המשתמש מועבר לחנות Play כדי לשדרג את האפליקציה. אפליקציית אנדרואיד צריכה להיות רשומה בקונסולה.
handleCodeInApp (בוליאנית|לא מוגדר) האם הקישור לפעולת האימייל ייפתח קודם באפליקציה לנייד או בקישור אינטרנט. ברירת המחדל היא שקר. כאשר הוא מוגדר כ-true, קישור קוד הפעולה יישלח כקישור אוניברסלי או קישור לאפליקציה של Android וייפתח על ידי האפליקציה אם מותקנת. במקרה השווא, הקוד יישלח תחילה לווידג'ט האינטרנט ולאחר מכן ב-Continue יפנה מחדש לאפליקציה אם מותקנת.
dynamicLinkDomain (מחרוזת|לא מוגדר) מגדיר את תחום הקישור הדינמי (או תת-הדומיין) לשימוש עבור הקישור הנוכחי אם הוא ייפתח באמצעות Firebase Dynamic Links. מכיוון שניתן להגדיר מספר דומיינים של קישורים דינמיים לכל פרויקט, שדה זה מספק את היכולת לבחור אחד במפורש. אם לא מסופק, הדומיין הישן ביותר משמש כברירת מחדל.

הדוגמה הבאה ממחישה כיצד לשלוח קישור לאימות דוא"ל שייפתח באפליקציה לנייד תחילה כקישור דינמי של Firebase (אפליקציית Apple com.example.ios או אפליקציית Android com.example.android שבה האפליקציה תתקין אם עדיין לא הותקנה הגרסה המינימלית היא 12). הקישור העמוק יכיל את מטען כתובת האתר להמשך 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',
};

Java

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",
}

C#

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.
  });

Java

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)

C#

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.
  });

Java

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)

C#

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.
  });

Java

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)

C#

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 באמצעות קישורי דוא"ל . זה יעזור לספק מידע כיצד להשלים את הכניסה לאחר שהמשתמש לוחץ על הקישור ומופנה חזרה לאפליקציה.