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.
  • 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 ve userChanges akışları: Dinleyicileriniz geçerli User değerini veya hiçbir kullanıcının kimliği doğrulanmamışsa null 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ülen UserCredential nesnesi: UserCredential nesnesi, geçerli User değerine sahip 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 oturum açmış olduğundan eminseniz currentUser özelliğinden User öğ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