Firebase ile Anonim olarak kimlik doğrulama

Firebase ile kimlik doğrulamak için Firebase Authentication'ı kullanarak geçici anonim hesaplar oluşturabilir ve kullanabilirsiniz. Bu geçici anonim hesaplar, uygulamanıza henüz kaydolmamış kullanıcıların güvenlik kurallarıyla korunan verilerle çalışmasına olanak tanımak için kullanılabilir. Anonim bir kullanıcı uygulamanıza kaydolmaya karar verirse oturum açma kimlik bilgilerini anonim hesaba bağlayabilirsiniz. Böylece kullanıcı, gelecekteki oturumlarda korunan verileriyle çalışmaya devam edebilir.

Başlamadan önce

  1. Henüz yapmadıysanız Başlarken kılavuzundaki adımları uygulayın.

  2. Anonim oturum açmayı etkinleştirin:

    • Firebase konsolunun Authentication (Kimlik Doğrulama) bölümünde Sign in method (Oturum açma yöntemi) sayfasını açın.
    • Oturum açma yöntemi sayfasında Anonim oturum açma yöntemini etkinleştirin ve Kaydet'i tıklayın.

Firebase ile anonim olarak kimlik doğrulama

Oturumu kapalı bir kullanıcı, Firebase ile kimlik doğrulama gerektiren bir uygulama özelliğini kullandığında signInAnonymously() işlevini çağırarak kullanıcının kimliğini anonim olarak doğrulayın:

try {
  final userCredential =
      await FirebaseAuth.instance.signInAnonymously();
  print("Signed in with temporary account.");
} on FirebaseAuthException catch (e) {
  switch (e.code) {
    case "operation-not-allowed":
      print("Anonymous auth hasn't been enabled for this project.");
      break;
    default:
      print("Unknown error.");
  }
}

Anonim hesabı kalıcı hesaba dönüştürme

Anonim bir kullanıcı uygulamanıza kaydolduğunda, yeni hesabıyla çalışmaya devam etmesine izin vermek isteyebilirsiniz. Örneğin, kullanıcının kaydolmadan önce alışveriş sepetine eklediği öğeleri yeni hesabının alışveriş sepetinde kullanılabilir hale getirebilirsiniz. Bunun için aşağıdaki adımları uygulayın:

  1. Kullanıcı kaydolduğunda, kullanıcının kimlik doğrulama sağlayıcısı için oturum açma akışını signInWith yöntemlerinden birini çağırma işlemi hariç olmak üzere tamamlayın. Örneğin, kullanıcının Google kimlik jetonunu, Facebook erişim jetonunu veya e-posta adresini ve şifresini alın.

  2. Yeni kimlik doğrulama sağlayıcısı için bir Credential nesnesi alın:

    // Google Sign-in
    final credential = GoogleAuthProvider.credential(idToken: idToken);
    
    // Email and password sign-in
    final credential =
        EmailAuthProvider.credential(email: emailAddress, password: password);
    
    // Etc.
    
  3. Credential nesnesini, oturum açan kullanıcının linkWithCredential() yöntemine iletin:

    try {
      final userCredential = await FirebaseAuth.instance.currentUser
          ?.linkWithCredential(credential);
    } on FirebaseAuthException catch (e) {
      switch (e.code) {
        case "provider-already-linked":
          print("The provider has already been linked to the user.");
          break;
        case "invalid-credential":
          print("The provider's credential is not valid.");
          break;
        case "credential-already-in-use":
          print("The account corresponding to the credential already exists, "
              "or is already linked to a Firebase User.");
          break;
        // See the API reference for the full list of error codes.
        default:
          print("Unknown error.");
      }
      ```
    

linkWithCredential() çağrısı başarılı olursa kullanıcının yeni hesabı, anonim hesabın Firebase verilerine erişebilir.

Sonraki adımlar

Bir kullanıcı yeni bir hesap oluşturduktan sonra bu hesap, Firebase projenizin bir parçası olarak saklanır ve kullanıcının kullandığı oturum açma yönteminden bağımsız olarak projenizdeki her uygulamada kullanıcıyı tanımlamak için kullanılabilir.

Uygulamalarınızda, kullanıcının temel profil bilgilerini User nesnesinden alabilirsiniz. Kullanıcıları yönetme başlıklı makaleyi inceleyin.

Firebase Realtime Database ve Cloud Storage güvenlik kurallarınızda, oturum açmış kullanıcının benzersiz kullanıcı kimliğini auth değişkeninden alabilir ve kullanıcının hangi verilere erişebileceğini kontrol etmek için kullanabilirsiniz.

Kullanıcıların, kimlik doğrulama sağlayıcı kimlik bilgilerini bağlayarak mevcut bir kullanıcı hesabına birden fazla kimlik doğrulama sağlayıcı kullanarak uygulamanızda oturum açmasına izin verebilirsiniz.

Bir kullanıcının oturumunu kapatmak için signOut() işlevini çağırın:

await FirebaseAuth.instance.signOut();