Kullanıcı oluştur
Firebase projenizde dört şekilde yeni bir kullanıcı oluşturursunuz:
-
createUserWithEmailAndPassword()
yöntemini çağırın. - Google Oturum Açma, Facebook Oturum Açma veya Apple gibi birleştirilmiş kimlik sağlayıcıyı kullanarak bir kullanıcının ilk kez oturum açmasını sağlayın.
Firebase konsolunun Kullanıcılar sayfasındaki Kimlik Doğrulama bölümünden de şifreyle kimliği doğrulanmış yeni kullanıcılar oluşturabilirsiniz.
Bir kullanıcının profilini alın
Bir kullanıcının profil bilgilerini almak için User
özelliklerini kullanın. Geçerli kullanıcıyı temsil eden bir User
nesnesi almanın üç yolu vardır:
authStateChanges
,idTokenChanges
veuserChanges
akışları: dinleyicileriniz geçerliUser
değerini alır veya hiçbir kullanıcının kimliği doğrulanmadıysanull
alır:FirebaseAuth.instance .authStateChanges() .listen((User? user) { if (user != null) { print(user.uid); } });
Uygulama başlatıldığında, yerel depolamadaki kullanıcı kimlik bilgileri (varsa) geri yüklendikten sonra bir etkinlik tetiklenir; bu, kullanıcı durumu başlatıldığında dinleyicilerinizin her zaman çağrılacağı anlamına gelir. Daha sonra, kimlik doğrulama durumu değiştiğinde, güncellenen kullanıcı durumuyla yeni bir olay oluşturulacaktır.
Kimlik doğrulama durumunu dinleyerek, kimlik doğrulama durumundaki bu değişikliklere tepki veren bir kullanıcı arayüzü oluşturabilirsiniz.
Kimlik doğrulama (
signIn
-) yöntemleri tarafından döndürülenUserCredential
nesnesi:UserCredential
nesnesi, geçerliUser
ile biruser
özelliğine sahiptir:final userCredential = await FirebaseAuth.instance.signInWithCredential(credential); final user = userCredential.user; print(user?.uid);
FirebaseAuth
örneğinincurrentUser
özelliği: Kullanıcının şu anda oturum açtığından eminseniz,currentUser
özelliğindenUser
erişebilirsiniz:if (FirebaseAuth.instance.currentUser != null) { print(FirebaseAuth.instance.currentUser?.uid); }
currentUser
iki nedenden dolayınull
olabilir:- Kullanıcı oturum açmamış.
- Kimlik doğrulama nesnesinin başlatılması tamamlanmadı. Kullanıcının oturum açma durumunu takip etmek için bir dinleyici kullanıyorsanız bu durumu halletmeniz gerekmez.
Kullanıcının sağlayıcıya özel profil bilgilerini alma
Bir kullanıcıya bağlı oturum açma sağlayıcılarından alınan profil bilgilerini almak için providerData
özelliğini kullanın. Örneğin:
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;
}
}
Bir kullanıcının profilini güncelleme
Bir kullanıcının temel profil bilgilerini (kullanıcının görünen adı ve profil fotoğrafı URL'si) update
yöntemleriyle güncelleyebilirsiniz. Örneğin:
await user?.updateDisplayName("Jane Q. User");
await user?.updatePhotoURL("https://example.com/jane-q-user/profile.jpg");
Kullanıcının e-posta adresini ayarlayın
Bir kullanıcının e-posta adresini updateEmail()
yöntemiyle ayarlayabilirsiniz. Örneğin:
await user?.updateEmail("janeq@example.com");
Bir kullanıcıya doğrulama e-postası gönderin
sendEmailVerification()
yöntemini kullanarak bir kullanıcıya adres doğrulama e-postası gönderebilirsiniz. Örneğin:
await user?.sendEmailVerification();
Firebase konsolunun Kimlik Doğrulama bölümünde kullanılan e-posta şablonunu E-posta Şablonları sayfasında özelleştirebilirsiniz. Firebase Yardım Merkezi'ndeki E-posta Şablonları'na bakın.
Doğrulama e-postası gönderilirken uygulamaya geri yönlendirmek için durumu bir devam URL'si aracılığıyla iletmek de mümkündür.
Ayrıca, e-postayı göndermeden önce Auth örneğindeki dil kodunu güncelleyerek doğrulama e-postasını yerelleştirebilirsiniz. Örneğin:
await FirebaseAuth.instance.setLanguageCode("fr");
await user?.sendEmailVerification();
Bir kullanıcının şifresini ayarlayın
updatePassword()
yöntemiyle bir kullanıcının şifresini ayarlayabilirsiniz. Örneğin:
await user?.updatePassword(newPassword);
Şifre sıfırlama e-postası gönder
sendPasswordResetEmail()
yöntemini kullanarak bir kullanıcıya şifre sıfırlama e-postası gönderebilirsiniz. Örneğin:
await FirebaseAuth.instance
.sendPasswordResetEmail(email: "user@example.com");
Firebase konsolunun Kimlik Doğrulama bölümünde kullanılan e-posta şablonunu E-posta Şablonları sayfasında özelleştirebilirsiniz. Firebase Yardım Merkezi'ndeki E-posta Şablonları'na bakın.
Parola sıfırlama e-postası gönderilirken uygulamaya geri yönlendirmek için durumu bir devam URL'si aracılığıyla iletmek de mümkündür.
Ayrıca, e-postayı göndermeden önce Auth örneğindeki dil kodunu güncelleyerek şifre sıfırlama e-postasını yerelleştirebilirsiniz. Örneğin:
await FirebaseAuth.instance.setLanguageCode("fr");
Firebase konsolundan da şifre sıfırlama e-postaları gönderebilirsiniz.
Kullanıcıyı silme
Bir kullanıcı hesabını delete()
yöntemiyle silebilirsiniz. Örneğin:
await user?.delete();
Ayrıca Firebase konsolunun Kullanıcılar sayfasındaki Kimlik Doğrulama bölümünden de kullanıcıları silebilirsiniz.
Bir kullanıcının kimliğini yeniden doğrulama
Hesabı silmek , birincil e-posta adresi ayarlamak ve şifreyi değiştirmek gibi güvenlik açısından hassas bazı işlemler, kullanıcının yakın zamanda oturum açmış olmasını gerektirir. Bu işlemlerden birini gerçekleştirirseniz ve kullanıcı çok uzun zaman önce oturum açmışsa, eylem başarısız olur ve requires-recent-login
kodunu içeren bir FirebaseAuthException
oluşturur. Böyle bir durumda, kullanıcıdan yeni oturum açma kimlik bilgilerini alarak ve kimlik bilgilerini yeniden reauthenticate
işlemine ileterek kullanıcının kimliğini yeniden doğrulayın. Örneğin:
// Prompt the user to re-provide their sign-in credentials.
// Then, use the credentials to reauthenticate:
await user?.reauthenticateWithCredential(credential);
Kullanıcı hesaplarını içe aktar
Firebase CLI'nin auth:import
komutunu kullanarak kullanıcı hesaplarını bir dosyadan Firebase projenize aktarabilirsiniz. Örneğin:
firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14