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

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

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

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

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

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

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

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

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

יש לספק מופע של firebase.auth.ActionCodeSettings בעת שליחת אימייל לאיפוס סיסמה או דוא"ל אימות. ממשק זה לוקח את הפרמטרים הבאים:

פָּרָמֶטֶר סוּג תיאור
url חוּט

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

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

הדוגמה הבאה ממחישה כיצד לשלוח קישור לאימות אימייל שייפתח באפליקציה לנייד תחילה כקישור דינמי של Firebase באמצעות דומיין הקישור הדינמי המותאם אישית example.page.link (אפליקציית iOS com.example.ios או אפליקציית Android com.example.android שבו האפליקציה תתקין אם היא לא כבר מותקנת והגרסה המינימלית היא 12 ). הקישור העמוק יכיל את מטען כתובת האתר להמשך 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 Auth משתמש ב-Firebase Dynamic Links בעת שליחת קישור שאמור להיפתח באפליקציה לנייד. על מנת להשתמש בתכונה זו, יש להגדיר קישורים דינמיים ב-Firebase Console.

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

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

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

      example.page.link

      תזדקק לערך זה כאשר תגדיר את אפליקציית Apple או Android ליירט את הקישור הנכנס.

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

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

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

טיפול בפעולות דואר אלקטרוני ביישום אינטרנט

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

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

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

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

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

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

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

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

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