Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

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

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

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

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

זה כולל את היתרונות הבאים:

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

אתחל את פעולות ה- ActionCodeSettings

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

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

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

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

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

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

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

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

ג'אווה

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';
admin
  .auth()
  .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)

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';
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)

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 . האובייקט 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)

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