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

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

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

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

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

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

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

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

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

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

פרמטר סוג תיאור
url מחרוזת

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

  • כאשר מתבצע טיפול בקישור בווידג'טים של פעולה באינטרנט, זהו הפרמטר העמוק בפרמטר של השאילתה continueUrl.
  • כשהקישור מטופל ישירות באפליקציה, זהו פרמטר השאילתה continueUrl בקישורי העומק של הקישור הדינמי.
iOS ({bundleId: string}|undefined) מגדיר את מזהה החבילה של iOS. המערכת תנסה לפתוח את הקישור באפליקציה ל-iOS, אם היא מותקנת. צריך לרשום את האפליקציה ל-iOS במסוף.
android ({packageName: string, התקנהApp:boolean|undefined, miniVersion: string|undefined}|undefined) הגדרת שם החבילה ל-Android. המערכת תנסה לפתוח את הקישור באפליקציה ל-Android, אם היא מותקנת. אם עוברים את installApp, מקבלים מציין אם להתקין את האפליקציה ל-Android אם המכשיר תומך בה שהאפליקציה לא מותקנת כבר. אם השדה הזה צוין בלי packageName, מוצגת שגיאה שמסבירה ש- צריך לציין את הערך packageName יחד עם השדה הזה. אם צוין minimumVersion, וגרסה ישנה יותר של מותקנת, המשתמש מועבר לחנות Play כדי לשדרג את האפליקציה. האפליקציה ל-Android צריכה להיות רשומה במסוף.
handleCodeInApp (בוליאני|לא מוגדר) אם הקישור לפעולה באימייל ייפתח באפליקציה לנייד או באתר תחילה. ערך ברירת המחדל הוא False. אם המדיניות מוגדרת כ-True, הקישור של קוד הפעולה הקובץ יישלח כקישור אוניברסלי או כקישור לאפליקציה ל-Android וייפתח. על ידי האפליקציה, אם היא מותקנת. במקרה של תוצאה שלילית, הקוד יישלח קודם לווידג'ט האינטרנט, ואז המשך הבדיקה יפנה לאפליקציה אם היא מותקנת.
dynamicLinkDomain (string|undefined) הגדרת הדומיין (או תת-הדומיין) של הקישור הדינמי שישמש את הקישור הנוכחי, אם הוא אמור להיפתח באמצעות קישורים דינמיים של Firebase. אפשר להגדיר כמה דומיינים של קישורים דינמיים לכל פרויקט, ולכן השדה הזה מאפשר לבחור דומיין אחד באופן מפורש. אם לא מציינים דומיין, המערכת משתמשת כברירת מחדל בדומיין הראשון.

הדוגמה הבאה ממחישה איך לשלוח קישור לאימות אימייל תיפתח קודם באפליקציה לנייד כקישור דינמי של Firebase באמצעות דומיין קישור דינמי example.page.link (אפליקציה ל-iOS com.example.ios או אפליקציה ל-Android com.example.android שבה האפליקציה יותקן אם היא עדיין לא מותקנת והגרסה המינימלית היא 12). קישור העומק יכיל את המטען הייעודי (payload) של כתובת ה-URL להמשך. https://www.example.com/?email=user@example.com

var actionCodeSettings = {
  url: 'https://www.example.com/?email=' + firebase.auth().currentUser.email,
  iOS: {
    bundleId: 'com.example.ios'
  },
  android: {
    packageName: 'com.example.android',
    installApp: true,
    minimumVersion: '12'
  },
  handleCodeInApp: true,
  // When multiple custom dynamic link domains are defined, specify which
  // one to use.
  dynamicLinkDomain: "example.page.link"
};
firebase.auth().currentUser.sendEmailVerification(actionCodeSettings)
  .then(function() {
    // Verification email sent.
  })
  .catch(function(error) {
    // Error occurred. Inspect error.code.
  });

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

  1. מפעילים את הקישורים הדינמיים ב-Firebase:

    1. במסוף Firebase, פותחים את הקטע Dynamic Links.
    2. אם עדיין לא אישרתם את התנאים של Dynamic Links ויצרתם דומיין Dynamic Links, עליכם לעשות זאת עכשיו.

      אם כבר יצרתם דומיין של Dynamic Links, כדאי לרשום אותו. Dynamic Links בדרך כלל נראה כמו בדוגמה הבאה:

      example.page.link

      יהיה צורך בערך הזה כשמגדירים את האפליקציה ל-Apple או ל-Android כך לעצור את הקישור הנכנס

  2. הגדרת אפליקציות ל-Android:

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

    1. אם בכוונתך לטפל בקישורים האלה מאפליקציית iOS, יש לציין את מזהה החבילה של iOS במסוף Firebase הגדרות הפרויקט. בנוסף, מזהה App Store ומפתח Apple צריך לציין גם את מזהה הצוות.
    2. בנוסף, תצטרכו להגדיר את הדומיין של הקישור האוניברסלי של FDL בתור דומיין משויך ביכולות של האפליקציה.
    3. אם אתם מתכננים להפיץ את האפליקציה לגרסאות iOS 8 ומטה, תצטרכו להגדיר את מזהה החבילה ב-iOS כסכימה בהתאמה אישית לכתובות URL נכנסות.
    4. מידע נוסף זמין במאמר קבלת הוראות ליצירת קישורים דינמיים ל-iOS.

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

אפשר לציין אם ברצונך לטפל בקישור לקוד הפעולה מהאינטרנט של האפליקציה תחילה ואז הפניה אוטומטית לדף אינטרנט אחר או לאפליקציה אחרת לנייד לאחר השלמתה בהצלחה, בתנאי שהאפליקציה לנייד זמינה. כדי לעשות זאת, מגדירים את handleCodeInApp לערך false באובייקט firebase.auth.ActionCodeSettings. אין צורך במזהה החבילה של iOS או בשם החבילה של Android, אבל אם תספקו אותם, המשתמש יוכל לקבל הפניה לאפליקציה שציינתם אחרי השלמת קוד הפעולה באימייל.

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

במקרה כזה, הקישור שבתוך פרמטר השאילתה continueUrl יהיה קישור FDL שהמטען הייעודי (Payload) שלו הוא URL שצוין ב-ActionCodeSettings לאובייקט. אתם יכולים ליירט את הקישור הנכנס מהאפליקציה שלכם ולטפל בו ללא תלות נוספת, אבל מומלץ להשתמש בספריית הלקוח של FDL כדי לנתח את הקישור לעומק.

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

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

אפשר לציין אם רוצים לטפל בקישור של קוד הפעולה בתוך האפליקציה לנייד תחילה, בתנאי שהיא מותקנת. עם אפליקציות ל-Android, יש לך גם אפשרות לציין באמצעות android.installApp שהאפליקציה אם המכשיר תומך בכך והוא עדיין לא מותקן. אם המשתמש לחץ על הקישור ממכשיר שלא תומך בנייד של האפליקציה, ניתן לפתוח אותו מדף אינטרנט במקום זאת. כדי לעשות זאת, מגדירים את handleCodeInApp לערך true באובייקט firebase.auth.ActionCodeSettings. צריך לציין גם את שם החבילה של האפליקציה לנייד ב-Android או את מזהה החבילה של האפליקציה ל-iOS.

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

במקרה כזה, הקישור לאפליקציה לנייד שיישלח למשתמש יהיה קישור FDL המטען הייעודי (Payload) הוא כתובת ה-URL של קוד הפעולה, שמוגדרת במסוף, עם השאילתה הפרמטרים oobCode, mode, apiKey ו-continueUrl. הערך השני יהיה הערך המקורי של URL שצוין באובייקט ActionCodeSettings. אומנם אפשר ליירט את הקישור הנכנס מהאפליקציה ולטפל בו ללא צורך או תלויה, מומלץ להשתמש בספריית הלקוח של FDL כדי לנתח את קישור העומק את/ה. ניתן להחיל את קוד הפעולה ישירות מאפליקציה לנייד שדומה לאופן שבו הוא מטופל מתהליך האינטרנט המתואר התאמה אישית של מטפלי אימייל.

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