Kullanıcı oluşturma
Firebase projenizde yeni bir kullanıcıyı dört şekilde oluşturabilirsiniz:
createUserWithEmailAndPassword()
yöntemini çağırın.- Google ile Oturum Açma, Facebook Girişi veya Apple gibi bir birleştirilmiş kimlik sağlayıcı kullanarak bir kullanıcının ilk kez oturum açmasını sağlayın.
Kullanıcılar sayfasındaki Firebase konsolunun Kimlik Doğrulama bölümünden de şifreyle kimliği doğrulanmış yeni kullanıcılar oluşturabilirsiniz.
Kullanıcının profilini alma
Kullanıcının profil bilgilerini almak için User
özelliklerini kullanın. Mevcut kullanıcıyı temsil eden bir User
nesnesini almanın üç yolu vardır:
authStateChanges
,idTokenChanges
veuserChanges
akışları: Dinleyicileriniz geçerliUser
değerini veya hiçbir kullanıcının kimliği doğrulanmamışsanull
değerini alır:FirebaseAuth.instance .authStateChanges() .listen((User? user) { if (user != null) { print(user.uid); } });
Uygulama başladığında, yerel depolama alanındaki kullanıcı kimlik bilgileri (varsa) geri yüklendikten sonra bir etkinlik tetiklenir. Diğer bir deyişle, kullanıcı durumu başlatıldığında dinleyicileriniz her zaman çağrılır. 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.
Kimlik doğrulama (
signIn
-) yöntemleri tarafından döndürülenUserCredential
nesnesi:UserCredential
nesnesi, geçerliUser
değerine sahip 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 oturum açmış olduğundan eminsenizcurrentUser
özelliğindenUser
öğesine erişebilirsiniz:if (FirebaseAuth.instance.currentUser != null) { print(FirebaseAuth.instance.currentUser?.uid); }
currentUser
, iki nedenden dolayınull
olabilir:- Kullanıcı oturum açmamıştır.
- auth nesnesinin ilk kullanıma hazırlanması tamamlanmadı. Kullanıcının oturum açma durumunu takip etmek için bir işleyici kullanıyorsanız bu destek kaydıyla ilgilenmenize gerek yoktur.
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. Örnek:
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
update
yöntemleriyle kullanıcının temel profil bilgilerini (kullanıcının görünen adı ve profil fotoğrafı URL'si) güncelleyebilirsiniz. Örnek:
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
Kullanıcının e-posta adresini updateEmail()
yöntemiyle ayarlayabilirsiniz. Örnek:
await user?.updateEmail("janeq@example.com");
Bir kullanıcıya doğrulama e-postası gönderme
Kullanıcılara sendEmailVerification()
yöntemini kullanarak adres doğrulama e-postası gönderebilirsiniz. Örnek:
await user?.sendEmailVerification();
Firebase konsolunun Kimlik Doğrulama bölümünde kullanılan e-posta şablonunu E-posta Şablonları sayfasından özelleştirebilirsiniz. Firebase Yardım Merkezi'nde E-posta Şablonları'na göz atın.
Doğrulama e-postası gönderirken uygulamaya geri yönlendirmek için durumu devam URL'si ile 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. Örnek:
await FirebaseAuth.instance.setLanguageCode("fr");
await user?.sendEmailVerification();
Kullanıcı şifresi ayarlayın
Kullanıcı şifresini updatePassword()
yöntemiyle ayarlayabilirsiniz. Örnek:
await user?.updatePassword(newPassword);
Şifre sıfırlama e-postası gönderin
sendPasswordResetEmail()
yöntemini kullanarak bir kullanıcıya şifre sıfırlama e-postası gönderebilirsiniz. Örnek:
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ından özelleştirebilirsiniz. Firebase Yardım Merkezi'nde E-posta Şablonları'na göz atın.
Şifre sıfırlama e-postası gönderilirken durumu tekrar uygulamaya yönlendirmek için devam URL'si aracılığıyla durum bilgisini 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. Örnek:
await FirebaseAuth.instance.setLanguageCode("fr");
Firebase konsolundan şifre sıfırlama e-postaları da gönderebilirsiniz.
Kullanıcı silme
Bir kullanıcı hesabını delete()
yöntemini kullanarak silebilirsiniz. Örnek:
await user?.delete();
Ayrıca, Kullanıcılar sayfasındaki Firebase konsolunun Kimlik Doğrulama bölümünden de kullanıcıları silebilirsiniz.
Kullanıcının kimliğini yeniden doğrulama
Hesap silme, birincil e-posta adresi ayarlama ve şifre değiştirme gibi güvenlik açısından hassas işlemler için kullanıcının kısa süre önce oturum açmış olması gerekir. Bu işlemlerden birini gerçekleştirirseniz ve kullanıcı çok uzun süre önce oturum açmışsa işlem başarısız olur ve requires-recent-login
kodunu içeren bir FirebaseAuthException
atar.
Bu durumda, kullanıcıdan yeni oturum açma kimlik bilgilerini alıp kimlik bilgilerini reauthenticate
hizmetine ileterek kullanıcının kimliğini yeniden doğrulayın. Örnek:
// 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 CLI'ın auth:import
komutunu kullanarak kullanıcı hesaplarını bir dosyadan Firebase projenize aktarabilirsiniz. Örnek:
firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14