Firebase'de Kullanıcıları Yönetme

Kullanıcı oluşturma

Firebase projenizde yeni bir kullanıcıyı dört şekilde oluşturabilirsiniz:

  • createUserWithEmailAndPassword() yöntemini çağırın.
  • Birleştirilmiş kimlik sağlayıcı kullanarak bir kullanıcının ilk kez oturum açmasını sağlama, Google ile Oturum Açma, Facebook Girişi veya Apple gibi.

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ında yer alan bir bölüm gösterilir.

Kullanıcının profilini alma

Kullanıcının profil bilgilerini almak için User özelliklerini kullanın. Her biri 100'den az gösterim alan geçerli kullanıcıyı temsil eden bir User nesnesini almanın üç yolu vardır:

  • authStateChanges, idTokenChanges ve userChanges akışları: dinleyicilere mevcut User veya hiçbir kullanıcı yoksa null gönderilir kimlik doğrulaması yapılmış:

    FirebaseAuth.instance
      .authStateChanges()
      .listen((User? user) {
        if (user != null) {
          print(user.uid);
        }
      });
    

    Uygulama başladığında, yerel depolama alanı yenilendi. Böylece, dinleyicileriniz her zaman ilk kullanıma sunulduğunda çağrılır. Daha sonra, kimlik doğrulama işlemi durumu değiştiğinde, güncellenen kullanıcı durumuyla yeni bir etkinlik oluşturulur.

    Kimlik doğrulama durumunu dinleyerek, Google Cloud'daki kimlik doğrulama durumunda bu değişikliklere tepki verir.

  • Kimlik doğrulama (signIn-) tarafından döndürülen UserCredential nesnesi yöntemler: UserCredential nesnesi, geçerliuser User:

    final userCredential =
        await FirebaseAuth.instance.signInWithCredential(credential);
    final user = userCredential.user;
    print(user?.uid);
    
  • FirebaseAuth örneğinin currentUser özelliği: kullanıcı şu anda oturum açmış durumda. User uygulamasına currentUser üzerinden erişebilirsiniz mülk:

    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ı. Bir dinleyici kullanarak takip etmek için bu destek kaydıyla ilgilenmenize gerek yoktur.

Kullanıcının sağlayıcıya özel profil bilgilerini alma

Bir 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 temel profil bilgilerini (kullanıcının görünen adı) güncelleyebilirsiniz. ve profil fotoğrafı URL'sini (update- yöntemleriyle) kullanın. Ö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

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önderme

Şu adrese sahip bir kullanıcıya adres doğrulama e-postası gönderebilirsiniz: sendEmailVerification() yöntemini çağırın. Örneğin:

await user?.sendEmailVerification();

Şu sayfanın Kimlik doğrulama bölümünde kullanılan e-posta şablonunu özelleştirebilirsiniz: Firebase konsolunda, E-posta Şablonları sayfasında yer alır. 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:

await FirebaseAuth.instance.setLanguageCode("fr");
await user?.sendEmailVerification();

Kullanıcı şifresi ayarlayın

Kullanıcı şifresini updatePassword() yöntemiyle ayarlayabilirsiniz. Örneğin:

await user?.updatePassword(newPassword);

Ş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:

await FirebaseAuth.instance
    .sendPasswordResetEmail(email: "user@example.com");

Şu sayfanın Kimlik doğrulama bölümünde kullanılan e-posta şablonunu özelleştirebilirsiniz: Firebase konsolunda, E-posta Şablonları sayfasında yer alır. 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:

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. Örneğin:

await user?.delete();

Ayrıca, Firebase konsolunu kullanıcılar sayfasında açın.

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 kodu içeren bir FirebaseAuthException atar requires-recent-login. 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:

// 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

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