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

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

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

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

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

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

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

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

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

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

שיטה תיאור
setUrl(String url)

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

  • כאשר הקישור מטופל בווידג'טים לפעולת האינטרנט, זהו הקישור העמוק בפרמטר השאילתה continueUrl .
  • כאשר הקישור מטופל ישירות באפליקציה, זהו פרמטר השאילתה continueUrl בקישור העמוק של הקישור הדינמי.
setIOSBundleId(String iOSBundleId) מגדיר את מזהה החבילה של iOS. זה ינסה לפתוח את הקישור באפליקציית iOS אם היא מותקנת. אפליקציית iOS צריכה להיות רשומה בקונסולה.
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) מגדיר את שם החבילה של Android. זה ינסה לפתוח את הקישור באפליקציית אנדרואיד אם היא מותקנת. אם installIfNotAvailable מוגדר כ- true , הוא מציין אם להתקין את אפליקציית Android אם המכשיר תומך בה והאפליקציה עדיין לא מותקנת. אם צוין MinimumVersion, ומותקנת גרסה ישנה יותר של האפליקציה, המשתמש מועבר לחנות Play כדי לשדרג את האפליקציה. אפליקציית אנדרואיד צריכה להיות רשומה בקונסולה.
setHandleCodeInApp(boolean status) האם הקישור לפעולת האימייל ייפתח קודם באפליקציה לנייד או בקישור אינטרנט. ברירת המחדל היא שקר. כאשר הוא מוגדר כ-true, קישור קוד הפעולה יישלח כקישור אוניברסלי או קישור לאפליקציה של Android וייפתח על ידי האפליקציה אם מותקנת. במקרה השווא, הקוד יישלח תחילה לווידג'ט האינטרנט ולאחר מכן ב-Continue יפנה מחדש לאפליקציה אם מותקנת.
setDynamicLinkDomain(String dynamicLinkDomain) מגדיר את תחום הקישור הדינמי (או תת-הדומיין) לשימוש עבור הקישור הנוכחי אם הוא ייפתח באמצעות Firebase Dynamic Links. מכיוון שניתן להגדיר מספר דומיינים של קישורים דינמיים לכל פרויקט, שדה זה מספק את היכולת לבחור אחד במפורש. אם לא מסופק, הדומיין הראשון משמש כברירת מחדל.

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

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.");
                }
            }
        });

Kotlin+KTX

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.")
            }
        }

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

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

    1. במסוף Firebase , פתח את הקטע קישורים דינמיים .
    2. אם עדיין לא הסכמתם לתנאי ה-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 שלך כסכימה מותאמת אישית עבור כתובות URL נכנסות.
    4. למידע נוסף על כך, עיין בהוראות קבלת קישורים דינמיים ל-iOS .

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

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

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

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

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

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

אתה יכול לציין אם ברצונך לטפל תחילה בקישור קוד הפעולה בתוך היישום הנייד שלך, בתנאי שהוא מותקן. עם אפליקציות אנדרואיד, יש לך גם את היכולת לציין באמצעות ה- installIfNotAvailable בוליאן שהאפליקציה תותקן אם המכשיר תומך בה והיא עדיין לא מותקנת. אם הקישור נלחץ ממכשיר שאינו תומך באפליקציה לנייד, הוא נפתח מדף אינטרנט במקום זאת. זה נעשה על ידי קריאה setHandleCodeInApp(true) באובייקט ActionCodeSettings.Builder . יש לציין גם את שם החבילה של האפליקציה לנייד או מזהה החבילה של iOS.

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

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

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