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

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

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

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

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

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

אתחל את ActionCodeSettings

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

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

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

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

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

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

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

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

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