אפשר להעביר סטטוס באמצעות כתובת URL להמשך כששולחים פעולות באימייל לאיפוס סיסמה או לאימות האימייל של משתמש. האפשרות הזו מאפשרת למשתמש לחזור לאפליקציה אחרי השלמת הפעולה. בנוסף, אתם יכולים לציין אם לטפל בקישור לפעולה באימייל ישירות מאפליקציה לנייד כשהיא מותקנת, במקום מדף אינטרנט.
האפשרות הזו יכולה להיות שימושית מאוד בתרחישים הנפוצים הבאים:
יכול להיות שמשתמש שלא מחובר לחשבון מנסה לגשת לתוכן שנדרשת גישה לחשבון כדי לצפות בו. עם זאת, יכול להיות שהמשתמש שכח את הסיסמה שלו ולכן יפעיל את תהליך איפוס הסיסמה. בסוף התהליך, המשתמש מצפה לחזור לקטע באפליקציה שאליו הוא ניסה לגשת.
אפליקציה יכולה להציע גישה רק לחשבונות מאומתים. לדוגמה, אפליקציה לניוזלטר עשויה לדרוש מהמשתמש לאמת את כתובת האימייל שלו לפני שהוא נרשם. המשתמש יעבור את תהליך אימות כתובת האימייל ויצפה לחזור לאפליקציה כדי להשלים את המינוי.
באופן כללי, כשמשתמש מתחיל תהליך של איפוס סיסמה או אימות כתובת אימייל באפליקציית Apple, הוא מצפה להשלים את התהליך בתוך האפליקציה. האפשרות להעביר מצב באמצעות כתובת URL להמשך מאפשרת זאת.
היכולת להעביר מצב באמצעות כתובת URL להמשך היא תכונה עוצמתית ש-Firebase Auth מספקת, והיא יכולה לשפר משמעותית את חוויית המשתמש.
העברת מצב של כתובת URL להמשך בפעולות באימייל
כדי להעביר כתובת URL להמשך בצורה מאובטחת, צריך להוסיף את הדומיין של כתובת ה-URL לרשימת ההיתרים במסוף Firebase. כדי לעשות זאת, מוסיפים את הדומיין לרשימת הדומיינים המורשים בקטע אימות בכרטיסייה שיטת הכניסה, אם הוא עדיין לא מופיע שם.
צריך לספק מופע של FIRActionCodeSettings
כששולחים אימייל לאיפוס סיסמה או אימייל לאימות. הממשק הזה מקבל את הפרמטרים הבאים:
Swift
פרמטר | סוג | תיאור |
---|---|---|
URL |
מחרוזת | הגדרת הקישור (כתובת URL של מצב/המשך) שיש לו משמעויות שונות בהקשרים שונים:
|
iOSBundleID |
מחרוזת | הגדרת מזהה החבילה ב-iOS כדי לעזור ל-Firebase Authentication לקבוע אם ליצור קישור לאינטרנט בלבד או קישור לנייד שנפתח במכשיר Apple |
androidPackageName |
מחרוזת | הגדרת שם החבילה של Android כדי לעזור ל-Firebase Authentication לקבוע אם ליצור קישור לאינטרנט בלבד או קישור לנייד שנפתח במכשיר Android |
handleCodeInApp |
בוליאני | האם הקישור לפעולה באימייל ייפתח קודם באפליקציה לנייד או בקישור לאתר. ברירת המחדל היא false. אם המדיניות מוגדרת כ-True, הקישור עם קוד הפעולה יישלח כקישור אוניברסלי או כקישור לאפליקציית Android, והאפליקציה תפתח אותו אם היא מותקנת. במקרה של תשובה שלילית, הקוד יישלח קודם לווידג'ט האינטרנטי, ואז, אם האפליקציה מותקנת, המשתמש יופנה אליה אחרי שימשיך. |
linkDomain |
מחרוזת | אם מוגדרים דומיינים מותאמים אישית של קישורי אירוח לפרויקט, צריך לציין באיזה מהם להשתמש כשפותחים את הקישור באפליקציה ספציפית לנייד. אחרת, הדומיין שמוגדר כברירת מחדל נבחר באופן אוטומטי (לדוגמה, PROJECT_ID.firebaseapp.com |
dynamicLinkDomain |
מחרוזת | הוצא משימוש. לא מציינים את הפרמטר הזה. |
Objective-C
פרמטר | סוג | תיאור |
---|---|---|
URL |
NSString | הגדרת הקישור (כתובת URL של מצב/המשך) שיש לו משמעויות שונות בהקשרים שונים:
|
iOSBundleID |
NSString | הגדרת מזהה החבילה ב-iOS כדי לעזור ל-Firebase Authentication לקבוע אם ליצור קישור לאינטרנט בלבד או קישור לנייד שנפתח במכשיר Android או Apple |
androidPackageName |
NSString | מגדיר את שם החבילה ב-Android כדי לעזור ל-Firebase Authentication לקבוע אם ליצור קישור לאינטרנט בלבד או קישור לנייד שנפתח במכשיר Android או Apple |
handleCodeInApp |
BOOL | האם הקישור לפעולה באימייל ייפתח קודם באפליקציה לנייד או בקישור לאתר. ברירת המחדל היא false. אם המדיניות מוגדרת כ-True, הקישור עם קוד הפעולה יישלח כקישור אוניברסלי או כקישור לאפליקציית Android, והאפליקציה תפתח אותו אם היא מותקנת. במקרה של תשובה שלילית, הקוד יישלח קודם לווידג'ט האינטרנטי, ואז, אם האפליקציה מותקנת, המשתמש יופנה אליה אחרי שימשיך. |
linkDomain |
NSString | אם מוגדרים דומיינים מותאמים אישית של קישורים לפרויקט, צריך לציין באיזה מהם להשתמש כשהקישור אמור להיפתח באפליקציה ספציפית לנייד. אחרת, הדומיין שמוגדר כברירת מחדל נבחר באופן אוטומטי (לדוגמה, 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 Hosting
Firebase Authentication משתמש ב-Firebase Hosting כששולחים קישור שנועד להיפתח באפליקציה לנייד. כדי להשתמש בתכונה הזו, צריך להגדיר קישורים של Hosting במסוף Firebase.
הגדרת אפליקציות של Apple:
- אם אתם מתכננים לטפל בקישורים האלה מהאפליקציה שלכם, תצטרכו להגדיר את Hosting דומיין הקישור כדומיין משויך ביכולות האפליקציה.
- מידע נוסף בנושא זמין במאמר הוראות לקבלת קישורים לאירוח ב-iOS.
הגדרת אפליקציות ל-Android:
- אם אתם מתכננים לטפל בקישורים האלה מאפליקציית Android שלכם, אתם צריכים לציין את שם החבילה של האפליקציה בהגדרות הפרויקט במסוף Firebase. בנוסף, צריך לספק את SHA-1 ו-SHA-256 של אישור האפליקציה.
- תצטרכו גם להגדיר את מסנן ה-Intent לקישור העומק בקובץ
AndroidManifest.xml
. - מידע נוסף בנושא זמין במאמר הוראות לקבלת קישורים לאירוח ב-Android.
טיפול בפעולות באימייל באפליקציית אינטרנט
אתם יכולים לציין אם אתם רוצים לטפל קודם בקישור של קוד הפעולה מאפליקציית אינטרנט ואז להפנות מחדש לדף אינטרנט אחר או לאפליקציה לנייד אחרי השלמה מוצלחת, בתנאי שהאפליקציה לנייד זמינה.
כדי לעשות את זה, צריך להגדיר את handleCodeInApp
ל-false
באובייקט FIRActionCodeSettings
(Obj-C) או ActionCodeSettings
(Swift). לא חובה לציין מזהה חבילה או שם חבילה ב-Android, אבל אם תציינו אותם, המשתמש יוכל לחזור לאפליקציה שצוינה אחרי השלמת הפעולה של קוד האימייל.
כתובת ה-URL של האתר שבה נעשה שימוש כאן היא זו שהוגדרה בקטע של תבניות פעולות באימייל. מוקצה לכל הפרויקטים אחד כברירת מחדל. מידע נוסף על התאמה אישית של handler של פעולת אימייל זמין במאמר בנושא התאמה אישית של handlers של אימיילים.
במקרה כזה, הקישור בפרמטר השאילתה continueURL
יהיה קישור Hosting שהמטען הייעודי שלו הוא URL
שצוין באובייקט ActionCodeSettings
.
כשמטפלים בפעולות שקשורות לאימייל, כמו אימות כתובת אימייל, צריך לנתח את קוד הפעולה מפרמטר השאילתה oobCode
בקישור העומק, ואז להחיל אותו באמצעות applyActionCode
כדי שהשינוי ייכנס לתוקף, כלומר כדי שהאימייל יאומת.
טיפול בפעולות שקשורות לאימייל באפליקציה לנייד
אתם יכולים לציין אם אתם רוצים לטפל קודם בקישור עם קוד הפעולה באפליקציה לנייד, בתנאי שהיא מותקנת. אם לוחצים על הקישור ממכשיר שלא תומך באפליקציה לנייד, הקישור ייפתח מדף אינטרנט במקום זאת. כדי לעשות את זה, צריך להגדיר את handleCodeInApp
ל-true
באובייקט FIRActionCodeSettings
(Obj-C) או ActionCodeSettings
(Swift). צריך לציין גם את שם החבילה ב-Android או את מזהה החבילה של האפליקציה לנייד. כתובת ה-URL החלופית לאתר שמשמשת כאן, כשאין אפליקציה לנייד, היא זו שהוגדרה בקטע של תבניות פעולות באימייל. מוקצה אחד כברירת מחדל לכל הפרויקטים. מידע נוסף על התאמה אישית של handler של פעולת אימייל זמין במאמר בנושא התאמה אישית של handlers של אימיילים.
במקרה הזה, הקישור לאפליקציה לנייד שיישלח למשתמש יהיה קישור Hosting שהמטען הייעודי שלו הוא כתובת ה-URL של קוד הפעולה, שהוגדרה במסוף, עם פרמטרי השאילתה oobCode
, mode
, apiKey
ו-continueUrl
. האחרון יהיה URL
המקורי שצוין באובייקט FIRActionCodeSettings
(Obj-C) או ActionCodeSettings
(Swift). אפשר להזין את קוד הפעולה ישירות מאפליקציה לנייד, בדומה לאופן שבו הוא מטופל בתהליך האינטרנטי שמתואר בקטע התאמה אישית של מטפלי אימיילים.
כשמטפלים בפעולות שקשורות לאימייל, כמו אימות כתובת אימייל, צריך לנתח את קוד הפעולה מפרמטר השאילתה oobCode
בקישור העומק, ואז להחיל אותו באמצעות applyActionCode
כדי שהשינוי ייכנס לתוקף, כלומר כדי שהאימייל יאומת.