מצב ההעברה בפעולות באימייל

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

האפשרות הזו יכולה להיות שימושית מאוד בתרחישים הנפוצים הבאים:

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

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

  • באופן כללי, כשמשתמש מתחיל תהליך אימות אימייל או איפוס סיסמה באפליקציה של Apple, הוא מצפה להשלים את התהליך בתוך האפליקציה. היכולת להעביר את המצב באמצעות כתובת URL להמשך מאפשרת לו לעשות זאת.

היכולת להעביר מצב באמצעות כתובת URL להמשך היא תכונה חזקה ש-Firebase Auth מספק, ויכולה לשפר משמעותית את חוויית המשתמש.

העברת המצב של כתובת URL להמשך בפעולות באימייל

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

צריך לספק מכונה של FIRActionCodeSettings כששולחים אימייל לאיפוס סיסמה או אימייל לאימות. הממשק הזה מקבל את הפרמטרים הבאים:

Swift

פרמטר סוג תיאור
URL String

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

  • כשהמערכת מטפלת בקישור בווידג'טים של פעולות באינטרנט, זהו קישור העומק בפרמטר השאילתה continueUrl.
  • כשהקישור מטופל ישירות באפליקציה, זהו פרמטר השאילתה continueUrl בקישור העומק של הקישור Hosting.
iOSBundleID String הגדרת מזהה החבילה ל-iOS כדי לעזור ל-Firebase Authentication לקבוע אם צריך ליצור קישור לאינטרנט בלבד או קישור לנייד שייפתח במכשיר של Apple
androidPackageName String הגדרת שם החבילה ל-Android כדי לעזור ל-Firebase Authentication לקבוע אם ליצור קישור לאינטרנט בלבד או קישור לנייד שייפתח במכשיר Android
handleCodeInApp בוליאני אם קישור הפעולה באימייל ייפתח קודם באפליקציה לנייד או בקישור לאינטרנט. ברירת המחדל היא false. אם הערך של הפרמטר הזה מוגדר כ-True, הקישור לקוד הפעולה יישלח כקישור אוניברסלי או כקישור לאפליקציה ל-Android, והאפליקציה תפתח אותו אם היא מותקנת. במקרה של תוצאה שלילית, הקוד יישלח קודם לווידג'ט האינטרנט, ואז המשך הפנייה תוביל לאפליקציה אם היא מותקנת.
linkDomain String כשמגדירים דומיינים מותאמים אישית של קישורי אירוח לפרויקט, צריך לציין באיזה מהם להשתמש כשהקישור ייפתח על ידי אפליקציה ספציפית לנייד. אחרת, דומיין ברירת המחדל ייבחר באופן אוטומטי (לדוגמה, PROJECT_ID.firebaseapp.com).
dynamicLinkDomain String הוצא משימוש. אין לציין את הפרמטר הזה.

Objective-C

פרמטר סוג תיאור
URL NSString

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

  • כשהמערכת מטפלת בקישור בווידג'טים של פעולות באינטרנט, זהו קישור העומק בפרמטר השאילתה continueUrl.
  • כשהקישור מטופל ישירות באפליקציה, זהו פרמטר השאילתה continueUrl בקישור העומק של הקישור Hosting.
iOSBundleID NSString הגדרת מזהה החבילה ל-iOS כדי לעזור ל-Firebase Authentication לקבוע אם צריך ליצור קישור לאינטרנט בלבד או קישור לנייד שייפתח במכשיר Android או Apple
androidPackageName NSString הגדרת שם החבילה ל-Android כדי לעזור ל-Firebase Authentication לקבוע אם ליצור קישור לאינטרנט בלבד או קישור לנייד שייפתח במכשיר Android או Apple
handleCodeInApp BOOL אם קישור הפעולה באימייל ייפתח קודם באפליקציה לנייד או בקישור לאינטרנט. ברירת המחדל היא false. אם הערך של הפרמטר הזה מוגדר כ-True, הקישור לקוד הפעולה יישלח כקישור אוניברסלי או כקישור לאפליקציה ל-Android, והאפליקציה תפתח אותו אם היא מותקנת. במקרה של תוצאה שלילית, הקוד יישלח קודם לווידג'ט האינטרנט, ואז המשך הפנייה תוביל לאפליקציה אם היא מותקנת.
linkDomain NSString כשמגדירים דומיינים מותאמים אישית של קישורי Hosting לפרויקט, צריך לציין באיזה מהם להשתמש כשהקישור ייפתח על ידי אפליקציה ספציפית לנייד. אחרת, דומיין ברירת המחדל ייבחר באופן אוטומטי (לדוגמה, PROJECT_ID.firebaseapp.com).
dynamicLinkDomain NSString הוצא משימוש. אין לציין את הפרמטר הזה.

הדוגמה הבאה ממחישה איך לשלוח קישור אימות באימייל שייפתח קודם באפליקציה לנייד באמצעות הדומיין המותאם אישית Hosting custom-domain.com. קישור העומק יכיל את עומס העבודה של כתובת ה-URL להמשך https://www.example.com/?email=user@example.com.

Swift

var actionCodeSettings =  ActionCodeSettings.init()
actionCodeSettings.canHandleInApp = true
let user = Auth.auth().currentUser()
actionCodeSettings.URL =
    String(format: "https://www.example.com/?email=%@", user.email)
actionCodeSettings.iOSbundleID = Bundle.main.bundleIdentifier!
actionCodeSettings.setAndroidPakageName("com.example.android")
// Specify a custom Hosting link domain to use. The domain must be
// configured in Firebase Hosting and owned by the project.
actionCodeSettings.linkDomain = "custom-domain.com"
user.sendEmailVerification(withActionCodeSettings:actionCodeSettings { error in
  if error {
    // Error occurred. Inspect error.code and handle error.
    return
  }
  // Email verification sent.
})

Objective-C

 FIRActionCodeSettings *actionCodeSettings = [[FIRActionCodeSettings alloc] init];
 actionCodeSettings.handleCodeInApp = YES;
 FIRUser *user = [FIRAuth auth].currentUser;
 NSString *urlString =
     [NSString stringWithFormat:@"https://www.example.com/?email=%@", user.email];
 actionCodeSettings.URL = [NSURL URLWithString:urlString];
 actionCodeSettings.iOSBundleID = [NSBundle mainBundle].bundleIdentifier;
// Specify a custom Hosting link domain to use. The domain must be
// configured in Firebase Hosting and owned by the project.
 actionCodeSettings.linkDomain = @"custom-domain.com";
 [actionCodeSettings setAndroidPackageName:@"com.example.android"];
 [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings
                                        completion:^(NSError *_Nullable error) {
   if (error) {
     // Error occurred. Inspect error.code and handle error.
     return;
   }
   // Email verification sent.
 }];

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

  1. הגדרת אפליקציות של Apple:

    1. אם אתם מתכננים לטפל בקישורים האלה מהאפליקציה, תצטרכו להגדיר את דומיין הקישור Hosting כדומיין משויך ביכולות של האפליקציה.
    2. מידע נוסף זמין במאמר קבלת הוראות לקישור לאירוח ב-iOS.
  2. הגדרת אפליקציות ל-Android:

    1. אם אתם מתכננים לטפל בקישורים האלה מאפליקציית Android, עליכם לציין את שם החבילה של האפליקציה בהגדרות הפרויקט במסוף Firebase. בנוסף, צריך לספק את SHA-1 ו-SHA-256 של אישור האפליקציה.
    2. תצטרכו גם להגדיר את מסנן הכוונה לקישור העומק בקובץ AndroidManifest.xml.
    3. מידע נוסף זמין במאמר קבלת הוראות לקישור לאירוח ב-Android.

טיפול בפעולות אימייל באפליקציית אינטרנט

אתם יכולים לציין אם אתם רוצים לטפל בקישור לקוד הפעולה מאפליקציית אינטרנט ואז להפנות אוטומטית לדף אינטרנט אחר או לאפליקציה לנייד אחרת אחרי השלמת הפעולה, בתנאי שהאפליקציה לנייד זמינה. כדי לעשות זאת, מגדירים את handleCodeInApp כ-false באובייקט FIRActionCodeSettings (Obj-C) או ActionCodeSettings (Swift). אין צורך במזהה חבילה או בשם החבילה ב-Android, אבל אם תספקו אותם, המשתמש יוכל לקבל הפניה לאפליקציה שציינתם אחרי השלמת קוד הפעולה באימייל.

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

במקרה כזה, הקישור בפרמטר השאילתה continueURL יהיה קישור Hosting שבו עומס העבודה הוא URL שצוין באובייקט ActionCodeSettings.

כשמטפלים בפעולות אימייל כמו אימות אימייל, צריך לנתח את קוד הפעולה מפרמטר השאילתה oobCode מקישורי העומק, ואז להחיל אותו דרך applyActionCode כדי שהשינוי ייכנס לתוקף, כלומר האימייל יאומת.

טיפול בפעולות אימייל באפליקציה לנייד

אתם יכולים לציין אם אתם רוצים לטפל בקישור של קוד הפעולה באפליקציה לנייד קודם, בתנאי שהיא מותקנת. אם הקישור נלחץ ממכשיר שלא תומך באפליקציה לנייד, הוא נפתח בדף אינטרנט במקום זאת. כדי לעשות זאת, מגדירים את handleCodeInApp כ-true באובייקט FIRActionCodeSettings (Obj-C) או ActionCodeSettings (Swift). צריך לציין גם את שם החבילה או את מזהה החבילה של האפליקציה לנייד ב-Android. כתובת ה-URL החלופית לאתר שתופיע כאן, אם אין אפליקציה לנייד, היא זו שמוגדרת בקטע 'תבניות של פעולות באימייל'. כברירת מחדל, המערכת מקצה חשבון לכל פרויקט. במאמר התאמה אישית של שירותי אימייל מוסבר איך להתאים אישית את השירות לטיפול בפעולות אימייל.

במקרה כזה, הקישור לאפליקציה לנייד שיישלח למשתמש יהיה קישור Hosting, ועומס התעבורה שלו יהיה כתובת ה-URL של קוד הפעולה שהוגדרה במסוף, עם הפרמטרים של השאילתה oobCode, ‏ mode, ‏ apiKey ו-continueUrl. הערך השני יהיה URL המקורי שצוין באובייקט FIRActionCodeSettings (Obj-C) או באובייקט ActionCodeSettings (Swift). אפשר להחיל את קוד הפעולה ישירות מאפליקציה לנייד, בדומה לאופן שבו הוא מטופל בתהליך האינטרנט שמתואר בקטע התאמה אישית של שירותי אימייל.

כשמטפלים בפעולות אימייל כמו אימות אימייל, צריך לנתח את קוד הפעולה מפרמטר השאילתה oobCode מקישורי העומק, ואז להחיל אותו דרך applyActionCode כדי שהשינוי ייכנס לתוקף, כלומר האימייל יאומת.