לפעמים אפליקציות לנייד צריכות לבצע פעולות אינטראקטיביות עם המשתמשים ולשלוח להם אימיילים כדי לבקש מהם לבצע פעולות מסוימות.
ערכות ה-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.
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',
},
// The domain must be configured in Firebase Hosting and owned by the project.
linkDomain: 'custom-domain.com',
};
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",
}
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
אופציונלי. הפעולה תסתיים עם הקישור לביצוע הפעולה באימייל. כתובת האימייל שבה משתמשים חייבת להיות שייכת למשתמש קיים.
// 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)
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
אופציונלי. הפעולה תסתיים באמצעות הקישור לפעולה באימייל.
כתובת האימייל שבה משתמשים חייבת להיות שייכת למשתמש קיים.
// 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)
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
נדרש כדי לספק מידע על המקום שאליו המשתמש יוחזר אחרי הלחיצה על הקישור להשלמת הכניסה. הפעולה תסתיים עם הקישור לפעולה באימייל.
בניגוד לאיפוס סיסמה ולאימות באמצעות אימייל, כתובת האימייל שבה משתמשים לא חייבת להיות של משתמש קיים, כי אפשר להשתמש בפעולה הזו כדי לרשום משתמשים חדשים לאפליקציה דרך קישור באימייל.
// 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.
});
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)
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 באמצעות קישורי אימייל כך תוכלו לספק מידע על השלמת הכניסה אחרי שהמשתמש לוחץ על הקישור ומופנה חזרה לאפליקציה.