לפעמים אפליקציות לנייד צריכות לבצע פעולות אינטראקטיביות עם המשתמשים ולשלוח להם אימיילים כדי לבקש מהם לבצע פעולות מסוימות.
ערכות ה-SDK של לקוחות ב-Firebase מאפשרות לשלוח למשתמשים אימיילים עם קישורים שבעזרתם הם יכולים לאפס סיסמה, לאמת כתובת אימייל ולהיכנס באמצעות אימייל. האימיילים האלה מבוססים על תבניות ונשלחים על ידי Google. אפשר לבצע בהם התאמה אישית מוגבלת.
אם אתם רוצים להשתמש בתבניות אימייל משלכם ובשירות שליחת אימיילים משלכם, בדף הזה מוסבר איך להשתמש ב-Firebase Admin SDK כדי ליצור באופן פרוגרמטי את קישורי הפעולה לתהליכים שלמעלה, שתוכלו לכלול באימיילים למשתמשים.
היתרונות של השימוש ב-Google Sheets:
- התאמה אישית של תבניות אימייל. האפשרויות האלה כוללות הוספה של סגנונות חדשים ופרסום מותג מותאם אישית, שינוי של ניסוח וסמלי לוגו, הפנייה למשתמשים בשם הפרטי במקום בשם המלא ועוד.
- החלת תבניות שונות בהתאם להקשר. לדוגמה, אם המשתמש מאמת את כתובת האימייל שלו כדי להירשם לניוזלטר, יכול להיות שתצטרכו לספק את ההקשר בתוכן האימייל. דוגמה נוספת היא כניסה באמצעות קישור לאימייל: בתרחיש אחד, אותו משתמש יכול להפעיל את הכניסה הזו, או שהיא יכולה להתבצע כהזמנה ממשתמש אחר. צריך לכלול את ההקשר באימייל.
- תרגום ותאימות תרבותית של תבניות אימייל בהתאמה אישית.
- היכולת ליצור את הקישור מסביבת שרת מאובטחת.
- אפשרות להתאים אישית את אופן פתיחת הקישור, דרך אפליקציה לנייד או דרך דפדפן, ואת האופן שבו מעבירים פרטי מצב נוספים וכו'.
- אפשרות להתאים אישית את הדומיין של הקישור לנייד שמשמש לתהליכים באפליקציה לנייד בזמן יצירת הקישור לפעולה באימייל.
איך מפעילים את ActionCodeSettings
יכול להיות שתצטרכו לאתחל מכונה של ActionCodeSettings
כדי ליצור קישור לפעולה באימייל.
ActionCodeSettings
מאפשרים להעביר מצב נוסף באמצעות כתובת URL להמשך, שניתן לגשת אליה אחרי שהמשתמש לוחץ על הקישור באימייל. כך המשתמש יכול גם לחזור לאפליקציה אחרי השלמת הפעולה. בנוסף, תוכלו לציין אם המערכת תפעל את הקישור לפעולה באימייל ישירות מהאפליקציה לנייד כשהיא מותקנת או מדפדפן.
אם הקישורים נועדו לפתיחה דרך אפליקציה לנייד, תצטרכו לבצע כמה משימות כדי לזהות את הקישורים האלה מהאפליקציה לנייד. תוכלו להיעזר בהוראות להגדרת קישורים לנייד לפעולות באימייל.
כדי לאתחל מכונה של ActionCodeSettings
, צריך לספק את הנתונים הבאים:
פרמטר | סוג | תיאור |
---|---|---|
url |
מחרוזת | הגדרת הקישור (כתובת ה-URL של המצב/המשך) שיש לו משמעויות שונות בהקשרים שונים:
|
iOS |
({bundleId: string}|undefined) | הגדרת מזהה החבילה ל-iOS כדי לעזור ל-Firebase Authentication לקבוע אם צריך ליצור קישור לאינטרנט בלבד או קישור לנייד שייפתח במכשיר של Apple |
android |
({packageName: string, installApp:boolean|undefined, minimumVersion: string|undefined}|undefined) | מגדיר את שם החבילה ל-Android כדי לעזור ל-Firebase Authentication לקבוע אם ליצור קישור לאינטרנט בלבד או קישור לנייד שייפתח במכשיר Android |
handleCodeInApp |
(boolean|undefined) | אם קישור הפעולה באימייל ייפתח קודם באפליקציה לנייד או בקישור לאינטרנט. ברירת המחדל היא false. אם הערך של הפרמטר הזה מוגדר כ-True, הקישור לקוד הפעולה יישלח כקישור אוניברסלי או כקישור לאפליקציה ל-Android, והאפליקציה תפתח אותו אם היא מותקנת. במקרה של תוצאה שלילית, הקוד יישלח קודם לווידג'ט האינטרנט, ואז המשך הפנייה תוביל לאפליקציה אם היא מותקנת. |
linkDomain |
(string|undefined) | כשמגדירים דומיינים מותאמים אישית של קישורי אירוח לפרויקט, צריך לציין באיזה מהם להשתמש כשהקישור ייפתח על ידי אפליקציה ספציפית לנייד. אחרת, דומיין ברירת המחדל ייבחר באופן אוטומטי (לדוגמה, PROJECT_ID.firebaseapp.com |
dynamicLinkDomain |
(string|undefined) | הוצא משימוש. אין לציין את הפרמטר הזה. |
הדוגמה הבאה ממחישה איך שולחים קישור אימות באימייל שייפתח קודם באפליקציה לנייד. הקישור העומק יכיל את עומס העבודה של כתובת ה-URL להמשך https://www.example.com/checkout?cartId=1234
. הדומיין המותאם אישית של הקישור Hosting הוא custom-domain.com
, וצריך להגדיר אותו לשימוש עם Firebase Hosting.
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();
Python
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',
)
Go
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());
}
Python
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)
Go
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());
}
Python
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)
Go
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());
}
Python
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)
Go
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 באמצעות קישורי אימייל כך תוכלו לספק מידע על השלמת הכניסה אחרי שהמשתמש לוחץ על הקישור ומופנה חזרה לאפליקציה.