Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

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

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

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

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

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

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

אתחל את ActionCodeSettings

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

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

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

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

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

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

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

הדוגמה הבאה ממחישה כיצד לשלוח קישור האימות בדוא"ל שתיפתח יישום נייד הראשון בתור Firebase Dynamic Link (יישום iOS 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',
};

ג'אווה

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

ג'אווה

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

ג'אווה

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

ג'אווה

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