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

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 ve userChanges akışları: dinleyicileriniz geçerli User değerini alır veya hiçbir kullanıcının kimliği doğrulanmadıysa null 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ülen UserCredential nesnesi: UserCredential nesnesi, geçerli User ile bir user özelliğine sahiptir:

    final userCredential =
        await FirebaseAuth.instance.signInWithCredential(credential);
    final user = userCredential.user;
    print(user?.uid);
    
  • FirebaseAuth örneğinin currentUser özelliği: Kullanıcının şu anda oturum açtığından eminseniz, currentUser özelliğinden User 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