Kullanıcı oluşturma
Firebase projenizde, yeni bir kullanıcı oluşturmak için
createUserWithEmailAndPassword
yöntemini kullanarak veya bir kullanıcının birleştirilmiş kimlik kullanarak ilk kez oturum açmasını sağlayarak
sağlayıcı (ör. Google ile Oturum Açma veya
Facebook'a Giriş.
Ayrıca Kimlik Doğrulama bölümünden şifreyle kimliği doğrulanmış yeni kullanıcılar da Firebase konsolunun Kullanıcılar sayfasındaki bölümüne gidin.
Oturum açmış durumdaki kullanıcıyı getir
Geçerli kullanıcıyı edinmenin önerilen yolu, getCurrentUser
yöntemini çağırmaktır.
Hiçbir kullanıcı oturum açmamışsa getCurrentUser
, null değerini döndürür:
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
öğesinin null olmayan bir FirebaseUser
döndüreceği bazı durumlar vardır
ancak temel jeton geçerli değil. Bu durum örneğin, kullanıcı yalnızca
başka bir cihazda silindi ve yerel jeton yenilenmedi. Böyle durumlarda
geçerli bir kullanıcı getCurrentUser
alabilirsiniz, ancak kimlik doğrulaması için sonraki çağrılar
başarısız olur.
getCurrentUser
ayrıca null
hatası da döndürebilir çünkü auth nesnesi
başlatma işlemi tamamlandı.
Bir AuthStateListener eklerseniz temel jeton durumu her değiştiğinde bir geri çağırma alırsınız. Bu yukarıda bahsedilenler gibi sıra dışı durumlara yanıt vermek açısından faydalı olabilir.
Kullanıcının profilini alma
Kullanıcının profil bilgilerini almak için
FirebaseUser
Örneğin:
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(); }
Kullanıcının sağlayıcıya özel profil bilgilerini alma
Bir
kullanıcı için getProviderData
yöntemini kullanın. Örneğin:
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(); } }
Kullanıcı profilini güncelleme
Kullanıcının temel profil bilgilerini (kullanıcının görünen adı) güncelleyebilirsiniz.
ve profil fotoğrafı URL'si (updateProfile
yöntemiyle). Örneğin:
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."); } } });
Kullanıcının e-posta adresini ayarlama
Kullanıcının e-posta adresini updateEmail
yöntemiyle ayarlayabilirsiniz. Örneğin:
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."); } } });
Bir kullanıcıya doğrulama e-postası gönderme
Şu adrese sahip bir kullanıcıya adres doğrulama e-postası gönderebilirsiniz:
sendEmailVerification
yöntemini çağırın. Örneğin:
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."); } } });
Şu sayfanın Kimlik doğrulama bölümünde kullanılan e-posta şablonunu özelleştirebilirsiniz: Firebase konsolunda, E-posta Şablonları sayfasından ulaşabilirsiniz. E-posta Şablonları'na göz atın: Firebase Yardım Merkezi.
Durum ayrıca bir geri yönlendirmek için devam URL'si uygulamaya koymayı tercih etmiş olursunuz.
Ayrıca, e-posta adresinin dilini güncelleyerek doğrulama e-postasını da yerelleştirebilirsiniz. Auth örneğine eklemeniz gerekir. Örneğin:
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();
Kullanıcı şifresi ayarlayın
Kullanıcı şifresini updatePassword
yöntemiyle ayarlayabilirsiniz. Örneğin:
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."); } } });
Şifre sıfırlama e-postası gönderin
sendPasswordResetEmail
kullanan bir kullanıcıya şifre sıfırlama e-postası gönderebilirsiniz.
yöntemidir. Örneğin:
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."); } } });
Şu sayfanın Kimlik doğrulama bölümünde kullanılan e-posta şablonunu özelleştirebilirsiniz: Firebase konsolunda, E-posta Şablonları sayfasından ulaşabilirsiniz. E-posta Şablonları'na göz atın: Firebase Yardım Merkezi.
Durum ayrıca bir geri yönlendirmek için devam URL'si uygulamaya bir şifre sıfırlama e-postası gönderir.
Ayrıca, dili güncelleyerek şifre sıfırlama e-postasını yerelleştirebilirsiniz. Auth örneğine eklemeniz gerekir. Örneğin:
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();
Şifre sıfırlama e-postalarını Firebase konsolundan da gönderebilirsiniz.
Kullanıcı silme
Bir kullanıcı hesabını delete
yöntemini kullanarak silebilirsiniz. Örneğin:
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."); } } });
Ayrıca, Firebase konsolu'nu seçin.
Kullanıcının kimliğini yeniden doğrulama
Güvenlik açısından hassas işlemler (ör.
hesap silme,
birincil e-posta adresini ayarlama ve
şifreyi değiştirme - kullanıcının
kısa bir süre önce oturum açtı. Bu işlemlerden birini gerçekleştirirseniz ve kullanıcı oturum açtıysa
çok uzun zaman önce işlem başarısız olur ve FirebaseAuthRecentLoginRequiredException
hatasını verir.
Bu durumda, yeni oturum açma kimlik bilgileri alarak kullanıcının kimliğini tekrar doğrulayın
kimlik bilgilerini reauthenticate
adlı sağlayıcıya iletmelidir. Örneğin:
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."); } });
Kullanıcı hesaplarını içe aktarma
Kullanıcı hesaplarını bir dosyadan Firebase projenize aktarmak için
Firebase CLI'ın auth:import
komutu. Örneğin:
firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14