Kullanıcı oluşturma
Firebase projenizde dört şekilde yeni kullanıcı oluşturabilirsiniz:
createUserWithEmailAndPassword()yöntemini çağırın.- Google ile Oturum Açma, Facebook ile Giriş veya Apple gibi bir federasyon kimlik sağlayıcı kullanarak bir kullanıcının ilk kez oturum açmasını sağlama.
Ayrıca, Firebase konsolunun Kimlik Doğrulama bölümündeki Kullanıcılar sayfasından yeni şifreyle kimlik doğrulaması yapılmış kullanıcılar oluşturabilirsiniz.
Kullanıcı profili alma
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,idTokenChangesveuserChangesakışları: Dinleyicileriniz, mevcutUserveya kullanıcı kimliği doğrulanmamışsanullakışını alır:FirebaseAuth.instance .authStateChanges() .listen((User? user) { if (user != null) { print(user.uid); } });Uygulama başlatıldığında, yerel depolamadan kullanıcı kimlik bilgileri (varsa) geri yüklendikten sonra bir etkinlik tetiklenir. Bu, dinleyicilerinizin her zaman kullanıcı durumu başlatıldığında çağrıldığı anlamına gelir. Ardından, kimlik doğrulama durumu her değiştiğinde güncellenen kullanıcı durumuyla yeni bir etkinlik oluşturulur.
Kimlik doğrulama durumunu dinleyerek, kimlik doğrulama durumundaki bu değişikliklere tepki veren bir kullanıcı arayüzü oluşturabilirsiniz.
authStateChanges().listen(...)öğesini doğrudan bir widget'ın build yönteminin içine yerleştirmeyin. Aksi takdirde, her yeniden oluşturmada yeni bir abonelik oluşturulur. Kimlik doğrulama durumuna yanıt olarak kullanıcı arayüzünü güncellemeniz gerekiyorsaStreamBuilderkullanın:StreamBuilder<User?>( stream: FirebaseAuth.instance.authStateChanges(), builder: (BuildContext context, AsyncSnapshot<User?> snapshot) { if (snapshot.hasError) { return const Text('Something went wrong'); } if (snapshot.connectionState == ConnectionState.waiting) { return const Text("Loading..."); } if (!snapshot.hasData) { return const SignInScreen(); } final user = snapshot.data!; return HomeScreen(userId: user.uid); }, )Bu yaklaşım, kullanıcının kimlik doğrulama durumu değiştiğinde widget ağacının otomatik olarak yeniden oluşturulmasını sağlar.
Kimlik doğrulama (
signIn) yöntemleriyle döndürülenUserCredentialnesnesi:UserCredentialnesnesinin, geçerliUserileuserözelliği vardır: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 eminsenizcurrentUserözelliğindenUseröğesine erişebilirsiniz:if (FirebaseAuth.instance.currentUser != null) { print(FirebaseAuth.instance.currentUser?.uid); }currentUser, iki nedenden dolayınullolabilir:- 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 ele almanız gerekmez.
Bir 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 edinmek 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;
}
}
Kullanıcı profilini güncelleme
Kullanıcının görünen adı ve profil fotoğrafı URL'si gibi temel profil bilgilerini 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 ayarlama
updateEmail() yöntemini kullanarak kullanıcının e-posta adresini ayarlayabilirsiniz. Örneğin:
await user?.updateEmail("janeq@example.com");
Kullanıcıya doğrulama e-postası gönderme
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ı başlıklı makaleyi inceleyin.
Doğrulama e-postası gönderirken uygulamaya geri yönlendirmek için devam URL'si üzerinden durum 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();
Kullanıcı şifresi belirleme
updatePassword() yöntemini kullanarak kullanıcı şifresi ayarlayabilirsiniz. Örneğin:
await user?.updatePassword(newPassword);
Şifre sıfırlama e-postası gönderme
Yöntemiyle kullanıcıya şifre sıfırlama e-postası gönderebilirsiniz.sendPasswordResetEmail() Ö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ı başlıklı makaleyi inceleyin.
Şifre sıfırlama e-postası gönderirken uygulamaya geri yönlendirmek için devam URL'si üzerinden durum 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");
Şifre sıfırlama e-postalarını Firebase konsolundan da gönderebilirsiniz.
Kullanıcı silme
Kullanıcı hesabını delete() yöntemiyle silebilirsiniz. Örneğin:
await user?.delete();
Kullanıcıları Firebase konsolunun Kimlik Doğrulama bölümündeki Kullanıcılar sayfasından da silebilirsiniz.
Kullanıcının kimliğini yeniden doğrulama
Hesap silme, birincil e-posta adresi ayarlama ve şifre değiştirme gibi güvenlikle ilgili bazı hassas işlemler için kullanıcının yakın zamanda oturum açmış olması gerekir. Bu işlemlerden birini gerçekleştirirseniz ve kullanıcı çok uzun zaman önce oturum açtıysa işlem başarısız olur ve FirebaseAuthException koduyla requires-recent-login hatası verilir.
Bu durumda, kullanıcıdan yeni oturum açma kimlik bilgileri alıp bu kimlik bilgilerini reauthenticate'ya 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 aktarma
Firebase KSA'nın 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