Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

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

צור משתמש

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

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

השג את המשתמש המחובר כעת

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

ג'אווה

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
    // User is signed in
} else {
    // No user is signed in
}

Kotlin + KTX

val user = Firebase.auth.currentUser
if (user != null) {
    // User is signed in
} else {
    // No user is signed in
}

ישנם מקרים שבהם getCurrentUser יחזיר FirebaseUser שאינו ריק אך האסימון הבסיסי אינו תקף. זה יכול לקרות, למשל, אם המשתמש נמחק במכשיר אחר והאסימון המקומי לא רענן. במקרה זה, ייתכן שתקבל משתמש תקף getCurrentUser אך שיחות עוקבות למשאבים מאומתים ייכשלו.

getCurrentUser עשוי גם להחזיר null מכיוון שאובייקט ה- auth לא הסתיים באתחול.

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

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

כדי לקבל את פרטי הפרופיל של המשתמש, השתמש בשיטות הגישה של מופע של FirebaseUser . לדוגמה:

ג'אווה

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
    // Name, email address, and profile photo Url
    String name = user.getDisplayName();
    String email = user.getEmail();
    Uri photoUrl = user.getPhotoUrl();

    // Check if user's email is verified
    boolean emailVerified = user.isEmailVerified();

    // The user's ID, unique to the Firebase project. Do NOT use this value to
    // authenticate with your backend server, if you have one. Use
    // FirebaseUser.getIdToken() instead.
    String uid = user.getUid();
}

Kotlin + KTX

val user = Firebase.auth.currentUser
user?.let {
    // Name, email address, and profile photo Url
    val name = user.displayName
    val email = user.email
    val photoUrl = user.photoUrl

    // Check if user's email is verified
    val emailVerified = user.isEmailVerified

    // The user's ID, unique to the Firebase project. Do NOT use this value to
    // authenticate with your backend server, if you have one. Use
    // FirebaseUser.getToken() instead.
    val uid = user.uid
}

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

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

ג'אווה

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
    for (UserInfo profile : user.getProviderData()) {
        // Id of the provider (ex: google.com)
        String providerId = profile.getProviderId();

        // UID specific to the provider
        String uid = profile.getUid();

        // Name, email address, and profile photo Url
        String name = profile.getDisplayName();
        String email = profile.getEmail();
        Uri photoUrl = profile.getPhotoUrl();
    }
}

Kotlin + KTX

val user = Firebase.auth.currentUser
user?.let {
    for (profile in it.providerData) {
        // Id of the provider (ex: google.com)
        val providerId = profile.providerId

        // UID specific to the provider
        val uid = profile.uid

        // Name, email address, and profile photo Url
        val name = profile.displayName
        val email = profile.email
        val photoUrl = profile.photoUrl
    }
}

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

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

ג'אווה

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
        .setDisplayName("Jane Q. User")
        .setPhotoUri(Uri.parse("https://example.com/jane-q-user/profile.jpg"))
        .build();

user.updateProfile(profileUpdates)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "User profile updated.");
                }
            }
        });

Kotlin + KTX

val user = Firebase.auth.currentUser

val profileUpdates = userProfileChangeRequest {
    displayName = "Jane Q. User"
    photoUri = Uri.parse("https://example.com/jane-q-user/profile.jpg")
}

user!!.updateProfile(profileUpdates)
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                Log.d(TAG, "User profile updated.")
            }
        }

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

ניתן להגדיר את כתובת הדוא"ל של המשתמש בשיטת updateEmail . לדוגמה:

ג'אווה

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

user.updateEmail("user@example.com")
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "User email address updated.");
                }
            }
        });

Kotlin + KTX

val user = Firebase.auth.currentUser

user!!.updateEmail("user@example.com")
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                Log.d(TAG, "User email address updated.")
            }
        }

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

באפשרותך לשלוח דוא"ל לאימות כתובת למשתמש בשיטת sendEmailVerification . לדוגמה:

ג'אווה

FirebaseAuth auth = FirebaseAuth.getInstance();
FirebaseUser user = auth.getCurrentUser();

user.sendEmailVerification()
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "Email sent.");
                }
            }
        });

Kotlin + KTX

val user = Firebase.auth.currentUser

user!!.sendEmailVerification()
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                Log.d(TAG, "Email sent.")
            }
        }

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

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

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

ג'אווה

auth.setLanguageCode("fr");
// To apply the default app language instead of explicitly setting it.
// auth.useAppLanguage();

Kotlin + KTX

auth.setLanguageCode("fr")
// To apply the default app language instead of explicitly setting it.
// auth.useAppLanguage()

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

ניתן להגדיר סיסמת משתמש בשיטת updatePassword . לדוגמה:

ג'אווה

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String newPassword = "SOME-SECURE-PASSWORD";

user.updatePassword(newPassword)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "User password updated.");
                }
            }
        });

Kotlin + KTX

val user = Firebase.auth.currentUser
val newPassword = "SOME-SECURE-PASSWORD"

user!!.updatePassword(newPassword)
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                Log.d(TAG, "User password updated.")
            }
        }

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

באפשרותך לשלוח דוא"ל לאיפוס סיסמה למשתמש בשיטת sendPasswordResetEmail . לדוגמה:

ג'אווה

FirebaseAuth auth = FirebaseAuth.getInstance();
String emailAddress = "user@example.com";

auth.sendPasswordResetEmail(emailAddress)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "Email sent.");
                }
            }
        });

Kotlin + KTX

val emailAddress = "user@example.com"

Firebase.auth.sendPasswordResetEmail(emailAddress)
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                Log.d(TAG, "Email sent.")
            }
        }

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

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

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

ג'אווה

auth.setLanguageCode("fr");
// To apply the default app language instead of explicitly setting it.
// auth.useAppLanguage();

Kotlin + KTX

auth.setLanguageCode("fr")
// To apply the default app language instead of explicitly setting it.
// auth.useAppLanguage()

ניתן גם לשלוח הודעות אימייל לאיפוס סיסמה ממסוף Firebase.

מחק משתמש

באפשרותך למחוק חשבון משתמש בשיטת delete . לדוגמה:

ג'אווה

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

user.delete()
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "User account deleted.");
                }
            }
        });

Kotlin + KTX

val user = Firebase.auth.currentUser!!

user.delete()
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                Log.d(TAG, "User account deleted.")
            }
        }

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

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

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

ג'אווה

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

// Get auth credentials from the user for re-authentication. The example below shows
// email and password credentials but there are multiple possible providers,
// such as GoogleAuthProvider or FacebookAuthProvider.
AuthCredential credential = EmailAuthProvider
        .getCredential("user@example.com", "password1234");

// Prompt the user to re-provide their sign-in credentials
user.reauthenticate(credential)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                Log.d(TAG, "User re-authenticated.");
            }
        });

Kotlin + KTX

val user = Firebase.auth.currentUser!!

// Get auth credentials from the user for re-authentication. The example below shows
// email and password credentials but there are multiple possible providers,
// such as GoogleAuthProvider or FacebookAuthProvider.
val credential = EmailAuthProvider
        .getCredential("user@example.com", "password1234")

// Prompt the user to re-provide their sign-in credentials
user.reauthenticate(credential)
        .addOnCompleteListener { Log.d(TAG, "User re-authenticated.") }

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

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

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