צור משתמש
אתה יוצר משתמש חדש בפרויקט Firebase שלך על ידי קריאה לשיטת createUserWithEmailAndPassword
או על ידי כניסה למשתמש בפעם הראשונה באמצעות ספק זהות מאוחד, כגון Google Sign-In או Facebook Login .
אתה יכול גם ליצור משתמשים חדשים מאומתים באמצעות סיסמה מקטע האימות של מסוף Firebase , בדף המשתמשים.
קבל את המשתמש המחובר כעת
הדרך המומלצת להשיג את המשתמש הנוכחי היא על ידי קריאה לשיטת getCurrentUser
. אם אף משתמש לא מחובר, getCurrentUser
מחזירה null:
Kotlin+KTX
val user = Firebase.auth.currentUser if (user != null) { // User is signed in } else { // No user is signed in }
Java
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); if (user != null) { // User is signed in } else { // No user is signed in }
ישנם מקרים שבהם getCurrentUser
יחזיר FirebaseUser
שאינו ריק אך האסימון הבסיסי אינו חוקי. זה יכול לקרות, למשל, אם המשתמש נמחק במכשיר אחר והאסימון המקומי לא רענן. במקרה זה, ייתכן שתקבל משתמש חוקי getCurrentUser
אך קריאות עוקבות למשאבים מאומתים ייכשלו.
getCurrentUser
עשוי גם להחזיר null
מכיוון שאובייקט האימות לא סיים אתחול.
אם תצרף AuthStateListener , תקבל התקשרות חוזרת בכל פעם שמצב האסימון הבסיסי משתנה. זה יכול להיות שימושי כדי להגיב למקרי קצה כמו אלה שהוזכרו לעיל.
קבל פרופיל של משתמש
כדי לקבל מידע על פרופיל משתמש, השתמש בשיטות הגישה של מופע של FirebaseUser
. לדוגמה:
Kotlin+KTX
val user = Firebase.auth.currentUser user?.let { // Name, email address, and profile photo Url val name = it.displayName val email = it.email val photoUrl = it.photoUrl // Check if user's email is verified val emailVerified = it.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. val uid = it.uid }
Java
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(); }
קבל מידע פרופיל ספציפי לספק של משתמש
כדי לקבל את פרטי הפרופיל מאוחזר מספקי הכניסה המקושרים למשתמש, השתמש בשיטת getProviderData
. לדוגמה:
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 } }
Java
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(); } }
עדכן פרופיל של משתמש
אתה יכול לעדכן את פרטי הפרופיל הבסיסיים של המשתמש - שם התצוגה של המשתמש וכתובת ה-URL של תמונת הפרופיל - בשיטת updateProfile
. לדוגמה:
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.") } }
Java
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."); } } });
הגדר כתובת אימייל של משתמש
אתה יכול להגדיר כתובת אימייל של משתמש בשיטת updateEmail
. לדוגמה:
Kotlin+KTX
val user = Firebase.auth.currentUser user!!.updateEmail("user@example.com") .addOnCompleteListener { task -> if (task.isSuccessful) { Log.d(TAG, "User email address updated.") } }
Java
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."); } } });
שלח למשתמש אימייל אימות
אתה יכול לשלוח דוא"ל לאימות כתובת למשתמש בשיטת sendEmailVerification
. לדוגמה:
Kotlin+KTX
val user = Firebase.auth.currentUser user!!.sendEmailVerification() .addOnCompleteListener { task -> if (task.isSuccessful) { Log.d(TAG, "Email sent.") } }
Java
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."); } } });
אתה יכול להתאים אישית את תבנית הדוא"ל המשמשת בקטע אימות של מסוף Firebase , בדף תבניות דוא"ל. ראה תבניות דוא"ל במרכז העזרה של Firebase.
אפשר גם להעביר מצב באמצעות כתובת URL להמשך כדי להפנות חזרה לאפליקציה בעת שליחת דוא"ל אימות.
בנוסף, תוכל לבצע לוקליזציה של דוא"ל האימות על ידי עדכון קוד השפה במופע Auth לפני שליחת הדוא"ל. לדוגמה:
Kotlin+KTX
auth.setLanguageCode("fr") // To apply the default app language instead of explicitly setting it. // auth.useAppLanguage()
Java
auth.setLanguageCode("fr"); // To apply the default app language instead of explicitly setting it. // auth.useAppLanguage();
הגדר סיסמה של משתמש
אתה יכול להגדיר סיסמה של משתמש בשיטת updatePassword
. לדוגמה:
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.") } }
Java
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."); } } });
שלח אימייל לאיפוס סיסמה
אתה יכול לשלוח דוא"ל לאיפוס סיסמה למשתמש בשיטת sendPasswordResetEmail
. לדוגמה:
Kotlin+KTX
val emailAddress = "user@example.com" Firebase.auth.sendPasswordResetEmail(emailAddress) .addOnCompleteListener { task -> if (task.isSuccessful) { Log.d(TAG, "Email sent.") } }
Java
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."); } } });
אתה יכול להתאים אישית את תבנית הדוא"ל המשמשת בקטע אימות של מסוף Firebase , בדף תבניות דוא"ל. ראה תבניות דוא"ל במרכז העזרה של Firebase.
אפשר גם להעביר מצב דרך כתובת URL להמשך כדי להפנות חזרה לאפליקציה בעת שליחת אימייל לאיפוס סיסמה.
בנוסף, תוכל לבצע לוקליזציה של דוא"ל איפוס הסיסמה על ידי עדכון קוד השפה במופע ה-Auth לפני שליחת האימייל. לדוגמה:
Kotlin+KTX
auth.setLanguageCode("fr") // To apply the default app language instead of explicitly setting it. // auth.useAppLanguage()
Java
auth.setLanguageCode("fr"); // To apply the default app language instead of explicitly setting it. // auth.useAppLanguage();
אתה יכול גם לשלוח אימיילים לאיפוס סיסמה ממסוף Firebase.
מחק משתמש
ניתן למחוק חשבון משתמש בשיטת delete
. לדוגמה:
Kotlin+KTX
val user = Firebase.auth.currentUser!! user.delete() .addOnCompleteListener { task -> if (task.isSuccessful) { Log.d(TAG, "User account deleted.") } }
Java
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."); } } });
אתה יכול גם למחוק משתמשים מקטע האימות של מסוף Firebase , בדף המשתמשים.
אימות מחדש של משתמש
חלק מהפעולות הרגישות לאבטחה - כגון מחיקת חשבון , הגדרת כתובת דוא"ל ראשית ושינוי סיסמה - מחייבות שהמשתמש נכנס לאחרונה. אם תבצע אחת מהפעולות הללו, והמשתמש נכנס לפני זמן רב מדי, הפעולה נכשלת וזורקת את FirebaseAuthRecentLoginRequiredException
. כאשר זה קורה, אימות מחדש את המשתמש על ידי קבלת אישורי כניסה חדשים מהמשתמש והעברת האישורים reauthenticate
. לדוגמה:
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.") }
Java
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."); } });
ייבוא חשבונות משתמש
אתה יכול לייבא חשבונות משתמש מקובץ לפרויקט Firebase שלך על ידי שימוש בפקודת auth:import
של Firebase CLI. לדוגמה:
firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14