אפשר להעביר את המצב דרך כתובת URL להמשך כששולחים פעולות אימייל להגדרת סיסמה מחדש או לאימות כתובת האימייל של משתמש. כך המשתמש יוכל לחזור לאפליקציה אחרי השלמת הפעולה. בנוסף, אפשר לציין אם המערכת תפנה את הקישור לפעולה באימייל ישירות לאפליקציה לנייד כשהיא מותקנת, במקום לדף אינטרנט.
האפשרות הזו יכולה להיות שימושית מאוד בתרחישים הנפוצים הבאים:
משתמש שלא מחובר כרגע לחשבון עשוי לנסות לגשת לתוכן שדורש כניסה לחשבון. עם זאת, יכול להיות שהמשתמש שכח את הסיסמה שלו ולכן הופעל תהליך האיפוס שלה. בסוף התהליך, המשתמש מצפה לחזור לקטע באפליקציה שאליו הוא ניסה לגשת.
אפליקציה יכולה להציע גישה רק לחשבונות מאומתים. לדוגמה, יכול להיות שהמשתמש יצטרך לאמת את כתובת האימייל שלו לפני ההרשמה לניוזלטר. המשתמש יעבור את תהליך האימות באימייל ויצפה לחזור לאפליקציה כדי להשלים את המינוי.
במקרים אחרים, יכול להיות שהמשתמש התחיל את התהליך מהמכשיר הנייד, ומצפה לחזור לאפליקציה לנייד אחרי האימות במקום לדפדפן.
היכולת להעביר מצב באמצעות כתובת URL להמשך היא תכונה חזקה ש-Firebase Auth מספק, ויכולה לשפר משמעותית את חוויית המשתמש.
העברת מצב או כתובת URL להמשך בפעולות באימייל
כדי להעביר בבטחה כתובת URL להמשך, צריך להוסיף את הדומיין של כתובת ה-URL לרשימת ההיתרים במסוף Firebase. כדי לעשות זאת, בקטע Authentication מוסיפים את הדומיין הזה לרשימת Authorized domains בכרטיסייה Sign-in method, אם הוא לא מופיע שם כבר.
צריך לספק מופע של ActionCodeSettings כששולחים אימייל לאיפוס הסיסמה או אימייל לאימות. אפשר ליצור אותו באמצעות הכיתה המשויכת ActionCodeSettings.Builder שמכילה את השיטות הבאות:
שיטה | תיאור |
---|---|
setUrl(String url) |
הגדרת הקישור (כתובת ה-URL של המצב/המשך) שיש לו משמעויות שונות בהקשרים שונים:
|
setIOSBundleId(String iOSBundleId) |
הגדרת מזהה החבילה ב-iOS. המערכת תנסה לפתוח את הקישור באפליקציה ל-iOS, אם היא מותקנת. צריך לרשום את האפליקציה ל-iOS במסוף. |
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) |
הגדרת שם החבילה ב-Android. הפעולה הזו תנסה לפתוח את הקישור באפליקציה ל-Android, אם היא מותקנת. אם הערך של installIfNotAvailable מוגדר כ-true , הוא מציין אם להתקין את אפליקציית Android אם המכשיר תומך בה והאפליקציה עדיין לא מותקנת. אם מציינים את הפרמטר minimumVersion, ומתקינים גרסה ישנה יותר של האפליקציה, המשתמש מועבר לחנות Play כדי לשדרג את האפליקציה. האפליקציה ל-Android צריכה להיות רשומה במסוף. |
setHandleCodeInApp(boolean status) |
אם קישור הפעולה באימייל ייפתח קודם באפליקציה לנייד או בקישור לאינטרנט. ברירת המחדל היא false. אם הערך של הפרמטר הזה מוגדר כ-True, הקישור לקוד הפעולה יישלח כקישור אוניברסלי או כקישור לאפליקציה ל-Android, והאפליקציה תפתח אותו אם היא מותקנת. במקרה של תוצאה שלילית, הקוד יישלח קודם לווידג'ט האינטרנט, ואז המשך הפנייה תוביל לאפליקציה אם היא מותקנת. |
setDynamicLinkDomain(String dynamicLinkDomain) |
הגדרת הדומיין (או תת-הדומיין) של הקישור הדינמי שישמש את הקישור הנוכחי, אם הוא אמור להיפתח באמצעות קישורים דינמיים של Firebase. אפשר להגדיר כמה דומיינים של קישורים דינמיים לכל פרויקט, ולכן השדה הזה מאפשר לבחור דומיין אחד באופן מפורש. אם לא מציינים דומיין, המערכת משתמשת כברירת מחדל בדומיין הראשון. |
הדוגמה הבאה ממחישה איך לשלוח קישור אימות באימייל שייפתח קודם באפליקציה לנייד כקישור דינמי של Firebase (אפליקציה ל-iOS com.example.ios
או אפליקציה ל-Android com.example.android
). קישור העומק יכיל את עומס הנתונים של כתובת ה-URL להמשך https://www.example.com/?email=user@example.com
.
Kotlin
val auth = Firebase.auth val user = auth.currentUser!! val url = "http://www.example.com/verify?uid=" + user.uid val actionCodeSettings = ActionCodeSettings.newBuilder() .setUrl(url) .setIOSBundleId("com.example.ios") // The default for this is populated with the current android package name. .setAndroidPackageName("com.example.android", false, null) .build() user.sendEmailVerification(actionCodeSettings) .addOnCompleteListener { task -> if (task.isSuccessful) { Log.d(TAG, "Email sent.") } }
Java
FirebaseAuth auth = FirebaseAuth.getInstance(); FirebaseUser user = auth.getCurrentUser(); String url = "http://www.example.com/verify?uid=" + user.getUid(); ActionCodeSettings actionCodeSettings = ActionCodeSettings.newBuilder() .setUrl(url) .setIOSBundleId("com.example.ios") // The default for this is populated with the current android package name. .setAndroidPackageName("com.example.android", false, null) .build(); user.sendEmailVerification(actionCodeSettings) .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Log.d(TAG, "Email sent."); } } });
הגדרת קישורים דינמיים ב-Firebase
כששולחים קישור שנועד להיפתח באפליקציה לנייד, Firebase Auth משתמש בקישורים דינמיים ב-Firebase. כדי להשתמש בתכונה הזו, צריך להגדיר קישורים דינמיים במסוף Firebase.
מפעילים את הקישורים הדינמיים ב-Firebase:
- במסוף Firebase, פותחים את הקטע Dynamic Links.
-
אם עדיין לא אישרתם את התנאים של Dynamic Links ויצרתם דומיין Dynamic Links, עליכם לעשות זאת עכשיו.
אם כבר יצרתם דומיין Dynamic Links, שימו לב אליו. דומיין Dynamic Links בדרך כלל נראה כמו הדוגמה הבאה:
example.page.link
תצטרכו את הערך הזה כשתקבעו שהאפליקציה שלכם ל-Apple או ל-Android תוכל ליירט את הקישור הנכנס.
הגדרת אפליקציות ל-Android:
- אם אתם מתכננים לטפל בקישורים האלה מאפליקציית Android, עליכם לציין את שם החבילה ב-Android בהגדרות הפרויקט במסוף Firebase. בנוסף, צריך לספק את SHA-1 ו-SHA-256 של אישור האפליקציה.
- בנוסף, תצטרכו להגדיר את מסנן ה-Intent לקישור העומק בקובץ AndroidManifest.xml.
- מידע נוסף זמין במאמר קבלת הוראות לקישור דינמי ל-Android.
הגדרת אפליקציות ל-iOS:
- אם אתם מתכננים לטפל בקישורים האלה מאפליקציית iOS, צריך לציין את מזהה החבילה של iOS בהגדרות הפרויקט במסוף Firebase. בנוסף, צריך לציין את מזהה App Store ואת מזהה צוות הפיתוח של Apple.
- בנוסף, תצטרכו להגדיר את הדומיין של הקישור האוניברסלי של FDL בתור דומיין משויך ביכולות של האפליקציה.
- אם אתם מתכננים להפיץ את האפליקציה לגרסאות iOS 8 ומטה, תצטרכו להגדיר את מזהה החבילה ב-iOS כסכימה בהתאמה אישית לכתובות URL נכנסות.
- מידע נוסף זמין במאמר קבלת הוראות ליצירת קישורים דינמיים ל-iOS.
טיפול בפעולות באימייל באפליקציית אינטרנט
אתם יכולים לציין אם אתם רוצים לטפל בקישור לקוד הפעולה מאפליקציית אינטרנט ואז להפנות אוטומטית לדף אינטרנט אחר או לאפליקציה לנייד אחרת אחרי השלמת הפעולה, בתנאי שהאפליקציה לנייד זמינה.
כדי לעשות זאת, קוראים ל-setHandleCodeInApp(false)
באובייקט ActionCodeSettings.Builder. אין צורך במזהה החבילה של iOS או בשם החבילה של Android, אבל אם תספקו אותם, המשתמש יוכל לקבל הפניה לאפליקציה שציינתם אחרי השלמת קוד הפעולה באימייל.
כתובת ה-URL לאתר שצוינה כאן היא זו שהוגדרה בקטע 'תבניות של פעולות באימייל'. כברירת מחדל, המערכת מקצה חשבון לכל הפרויקטים. למידע נוסף על התאמה אישית של בוררי אימייל, ראו התאמה אישית של בוררי אימייל.
במקרה כזה, הקישור בפרמטר השאילתה continueUrl
יהיה קישור FDL שהמטען הייעודי שלו הוא URL
שצוין באובייקט ActionCodeSettings
. אתם יכולים ליירט את הקישור הנכנס מהאפליקציה שלכם ולטפל בו ללא תלות נוספת, אבל מומלץ להשתמש בספריית הלקוח של FDL כדי לנתח את הקישור לעומק.
כשמטפלים בפעולות אימייל כמו אימות אימייל, צריך לנתח את קוד הפעולה מפרמטר השאילתה oobCode
מקישורי העומק, ואז להחיל אותו דרך applyActionCode
כדי שהשינוי ייכנס לתוקף, כלומר האימייל יאומת.
טיפול בפעולות אימייל באפליקציה לנייד
אתם יכולים לציין אם אתם רוצים לטפל בקישור של קוד הפעולה באפליקציה לנייד קודם, בתנאי שהיא מותקנת. באפליקציות ל-Android, אפשר גם לציין באמצעות הערך הבוליאני installIfNotAvailable
שהאפליקציה תותקן אם המכשיר תומך בה והיא עדיין לא מותקנת.
אם הקישור נלחץ ממכשיר שלא תומך באפליקציה לנייד, הוא נפתח מדף אינטרנט במקום זאת.
כדי לעשות זאת, קוראים ל-setHandleCodeInApp(true)
באובייקט ActionCodeSettings.Builder. צריך לציין גם את שם החבילה של האפליקציה לנייד ב-Android או את מזהה החבילה של האפליקציה ל-iOS.
כתובת ה-URL החלופית לאינטרנט שמשמשת כאן, כשאין אפליקציה לנייד זמינה, היא זו שמוגדרת בקטע 'תבניות של פעולות באימייל'. כברירת מחדל, המערכת מקצה חשבון לכל פרויקט. למידע נוסף על התאמה אישית של בוררי אימייל, ראו התאמה אישית של בוררי אימייל.
במקרה כזה, הקישור לאפליקציה לנייד שיישלח למשתמש יהיה קישור FDL, ועומס העבודה שלו יהיה כתובת ה-URL של קוד הפעולה שהוגדרה במסוף, עם פרמטרי השאילתה oobCode
, mode
, apiKey
ו-continueUrl
. הערך השני יהיה הערך המקורי של URL
שצוין באובייקט ActionCodeSettings
. אתם יכולים ליירט את הקישור הנכנס מהאפליקציה שלכם ולטפל בו בלי תלות נוספת, אבל מומלץ להשתמש בספריית הלקוח של FDL כדי לנתח את הקישור לעומק בשבילכם. אפשר להחיל את קוד הפעולה ישירות מאפליקציה לנייד, בדומה לאופן שבו הוא מטופל בתהליך האינטרנט שמתואר בקטע התאמה אישית של שירותי אימייל.
כשמטפלים בפעולות אימייל כמו אימות אימייל, צריך לנתח את קוד הפעולה מפרמטר השאילתה oobCode
מקישורי העומק, ואז להחיל אותו דרך applyActionCode
כדי שהשינוי ייכנס לתוקף, כלומר האימייל יאומת.