אימות עם Firebase באמצעות מערכת אימות מותאמת אישית

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

לפני שאתה מתחיל

  1. אם עדיין לא עשית זאת, בצע את השלבים במדריך התחל .
  2. התקן והגדר את Firebase Admin SDK . הקפד לאתחל את ה-SDK עם האישורים הנכונים עבור פרויקט Firebase שלך.

אימות באמצעות Firebase

  1. כאשר משתמשים נכנסים לאפליקציה שלך, שלח את אישורי הכניסה שלהם (לדוגמה, שם המשתמש והסיסמה שלהם) לשרת האימות שלך. השרת שלך בודק את האישורים, ואם הם תקפים, יוצר אסימון Firebase מותאם אישית ושולח את האסימון בחזרה לאפליקציה שלך.

  2. לאחר שתקבל את האסימון המותאם אישית משרת האימות שלך, העבר אותו ל- signInWithCustomToken() כדי להיכנס למשתמש:

    try {
        final userCredential =
            await FirebaseAuth.instance.signInWithCustomToken(token);
        print("Sign-in successful.");
    } on FirebaseAuthException catch (e) {
        switch (e.code) {
            case "invalid-custom-token":
                print("The supplied token is not a Firebase custom auth token.");
                break;
            case "custom-token-mismatch":
                print("The supplied token is for a different Firebase project.");
                break;
            default:
                print("Unknown error.");
        }
    }
    

הצעדים הבאים

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

באפליקציות שלך, תוכל לקבל את פרטי הפרופיל הבסיסיים של המשתמש מאובייקט User . ראה ניהול משתמשים .

בכללי האבטחה שלך במסד הנתונים בזמן אמת של Firebase וב-Cloud Storage, תוכל לקבל את מזהה המשתמש הייחודי של המשתמש המחובר ממשתנה auth , ולהשתמש בו כדי לשלוט לאילו נתונים המשתמש יכול לגשת.

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

כדי לצאת ממשתמש, התקשר ל- signOut() :

await FirebaseAuth.instance.signOut();