נהל משתמשים ב-Firebase

צור משתמש

אתה יוצר משתמש חדש בפרויקט Firebase שלך ​​בארבע דרכים:

  • קרא למתודה createUserWithEmailAndPassword() ‎.
  • היכנס למשתמש בפעם הראשונה באמצעות ספק זהות מאוחד , כגון Google Sign-In, Facebook Login או Apple.

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

קבל פרופיל של משתמש

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

  • הזרמים authStateChanges , idTokenChanges ו- userChanges : המאזינים שלך יקבלו את User הנוכחי, או null אם אף משתמש לא מאומת:

    FirebaseAuth.instance
      .authStateChanges()
      .listen((User? user) {
        if (user != null) {
          print(user.uid);
        }
      });
    

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

    על ידי האזנה למצב האימות, אתה יכול לבנות ממשק משתמש שמגיב לשינויים אלה במצב האימות.

  • האובייקט UserCredential המוחזר על ידי שיטות האימות ( signIn -): לאובייקט UserCredential יש מאפיין user עם User הנוכחי:

    final userCredential =
        await FirebaseAuth.instance.signInWithCredential(credential);
    final user = userCredential.user;
    print(user?.uid);
    
  • מאפיין ה- currentUser של המופע של FirebaseAuth : אם אתה בטוח שהמשתמש מחובר כעת, תוכל לגשת User מנכס ה- currentUser :

    if (FirebaseAuth.instance.currentUser != null) {
      print(FirebaseAuth.instance.currentUser?.uid);
    }
    

    ה- currentUser יכול להיות null משתי סיבות:

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

קבל מידע פרופיל ספציפי לספק של משתמש

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

if (user != null) {
    for (final providerProfile in user.providerData) {
        // ID of the provider (google.com, apple.com, etc.)
        final provider = providerProfile.providerId;

        // UID specific to the provider
        final uid = providerProfile.uid;

        // Name, email address, and profile photo URL
        final name = providerProfile.displayName;
        final emailAddress = providerProfile.email;
        final profilePhoto = providerProfile.photoURL;
    }
}

עדכן פרופיל של משתמש

אתה יכול לעדכן את פרטי הפרופיל הבסיסיים של המשתמש - שם התצוגה של המשתמש וכתובת ה-URL של תמונת הפרופיל - באמצעות שיטות update . לדוגמה:

await user?.updateDisplayName("Jane Q. User");
await user?.updatePhotoURL("https://example.com/jane-q-user/profile.jpg");

הגדר כתובת אימייל של משתמש

אתה יכול להגדיר כתובת אימייל של משתמש בשיטת updateEmail() . לדוגמה:

await user?.updateEmail("janeq@example.com");

שלח למשתמש אימייל אימות

אתה יכול לשלוח דוא"ל לאימות כתובת למשתמש בשיטת sendEmailVerification() . לדוגמה:

await user?.sendEmailVerification();

אתה יכול להתאים אישית את תבנית הדוא"ל המשמשת בקטע אימות של מסוף Firebase , בדף תבניות דוא"ל. ראה תבניות דוא"ל במרכז העזרה של Firebase.

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

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

await FirebaseAuth.instance.setLanguageCode("fr");
await user?.sendEmailVerification();

הגדר סיסמה של משתמש

אתה יכול להגדיר סיסמה של משתמש בשיטת updatePassword() . לדוגמה:

await user?.updatePassword(newPassword);

שלח אימייל לאיפוס סיסמה

אתה יכול לשלוח דוא"ל לאיפוס סיסמה למשתמש בשיטת sendPasswordResetEmail() . לדוגמה:

await FirebaseAuth.instance
    .sendPasswordResetEmail(email: "user@example.com");

אתה יכול להתאים אישית את תבנית הדוא"ל המשמשת בקטע אימות של מסוף Firebase , בדף תבניות דוא"ל. ראה תבניות דוא"ל במרכז העזרה של Firebase.

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

בנוסף, תוכל לבצע לוקליזציה של דוא"ל איפוס הסיסמה על ידי עדכון קוד השפה במופע ה-Auth לפני שליחת האימייל. לדוגמה:

await FirebaseAuth.instance.setLanguageCode("fr");

אתה יכול גם לשלוח אימיילים לאיפוס סיסמה ממסוף Firebase.

מחק משתמש

אתה יכול למחוק חשבון משתמש בשיטת delete() . לדוגמה:

await user?.delete();

אתה יכול גם למחוק משתמשים מקטע האימות של מסוף Firebase , בדף המשתמשים.

אימות מחדש של משתמש

חלק מהפעולות הרגישות לאבטחה - כגון מחיקת חשבון , הגדרת כתובת דוא"ל ראשית ושינוי סיסמה - מחייבות שהמשתמש נכנס לאחרונה. אם תבצע אחת מהפעולות הללו, והמשתמש נכנס לפני זמן רב מדי, הפעולה נכשלת וזורקת FirebaseAuthException עם הקוד requires-recent-login . כאשר זה קורה, אימות מחדש את המשתמש על ידי קבלת אישורי כניסה חדשים מהמשתמש והעברת האישורים reauthenticate . לדוגמה:

// Prompt the user to re-provide their sign-in credentials.
// Then, use the credentials to reauthenticate:
await user?.reauthenticateWithCredential(credential);

ייבוא ​​חשבונות משתמש

אתה יכול לייבא חשבונות משתמש מקובץ לפרויקט Firebase שלך ​​על ידי שימוש בפקודת auth:import של Firebase CLI. לדוגמה:

firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14