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

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

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

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

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

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

אתחול ActionCodeSettings

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

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

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

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

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

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

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

הדוגמא הבאה ממחישה כיצד לשלוח קישור אימות בדוא"ל שייפתח יישום נייד הראשון בתור Firebase Dynamic Link (אפליקציה האפלה com.example.ios או ל- Android com.example.android שבן האפליקציה תתקין אם לא כבר מותקן הגרסה המינימלית היא 12). הקישור העמוק יכיל את להמשיך URL מטען https://www.example.com/checkout?cartId=1234 . התחום הקישור הדינאמי בשימוש הוא coolapp.page.link , אשר חייב להיות מוגדר לשימוש עם Firebase דינמי קישורים.

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 usremail = 'user@example.com';
getAuth()
  .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.
  });

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