JavaScript Kullanarak Firebase ile Anonim Kimlik Doğrulama

Firebase ile kimlik doğrulamak için geçici anonim hesaplar oluşturmak ve kullanmak üzere Firebase Authentication'ü kullanabilirsiniz. Bu geçici anonim hesaplar, henüz uygulamanıza 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 gelecekteki oturumlarda korunan verileriyle çalışmaya devam edebilmesi için oturum açma kimlik bilgilerini anonim hesaba bağlayabilirsiniz.

Başlamadan önce

  1. Firebase'i JavaScript projenize ekleyin.
  2. Uygulamanızı henüz Firebase projenize bağlamadıysanız Firebase konsolundan bağlama
  3. Anonim kimlik doğrulamayı etkinleştirme:
    1. Firebase konsolunda Auth bölümünü açın.
    2. Oturum açma yöntemleri sayfasında Anonim oturum açma yöntemini etkinleştirin.
    3. İsteğe bağlı: Projenizi Firebase Authentication with Identity Platform sürümüne yükselttiyseniz otomatik temizlemeyi etkinleştirebilirsiniz. Bu ayarı etkinleştirdiğinizde, 30 günden eski anonim hesaplar otomatik olarak silinir. Otomatik temizleme özelliğinin etkin olduğu projelerde anonim kimlik doğrulaması artık kullanım sınırlarını veya faturalandırma kotalarını etkilemeyecek. Otomatik temizleme bölümünü inceleyin.

Firebase ile anonim olarak kimlik doğrulama

Oturumunu kapatmış bir kullanıcı, Firebase ile kimlik doğrulama gerektiren bir uygulama özelliğini kullandığında aşağıdaki adımları uygulayarak kullanıcının anonim olarak oturum açmasını sağlayın:

  1. signInAnonymously yöntemini çağırın:

    Web

    import { getAuth, signInAnonymously } from "firebase/auth";
    
    const auth = getAuth();
    signInAnonymously(auth)
      .then(() => {
        // Signed in..
      })
      .catch((error) => {
        const errorCode = error.code;
        const errorMessage = error.message;
        // ...
      });

    Web

    firebase.auth().signInAnonymously()
      .then(() => {
        // Signed in..
      })
      .catch((error) => {
        var errorCode = error.code;
        var errorMessage = error.message;
        // ...
      });
    Hataları yakalayıp buradan da yönetebilirsiniz. Hata kodlarının listesi için Auth Referans Dokümanları'na göz atın.
  2. signInAnonymously yöntemi hatasız bir şekilde tamamlanırsa onAuthStateChanged'e kayıtlı gözlemci tetiklenir ve anonim kullanıcının hesap verilerini User nesnesinden alabilirsiniz:

    Web

    import { getAuth, onAuthStateChanged } from "firebase/auth";
    
    const auth = getAuth();
    onAuthStateChanged(auth, (user) => {
      if (user) {
        // User is signed in, see docs for a list of available properties
        // https://firebase.google.com/docs/reference/js/auth.user
        const uid = user.uid;
        // ...
      } else {
        // User is signed out
        // ...
      }
    });

    Web

    firebase.auth().onAuthStateChanged((user) => {
      if (user) {
        // User is signed in, see docs for a list of available properties
        // https://firebase.google.com/docs/reference/js/v8/firebase.User
        var uid = user.uid;
        // ...
      } else {
        // User is signed out
        // ...
      }
    });

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

Uygulamanıza anonim bir kullanıcı kaydolduğunda, kullanıcının yeni hesabıyla çalışmaya devam etmesine izin vermek isteyebilirsiniz. Örneğin, kullanıcının kaydolmasından önce alışveriş sepetine eklediği öğeleri yeni hesabının alışveriş sepetine ekleyebilirsiniz. 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ı Auth.signInWith yöntemlerinden birini çağırmayı içermeyecek şekilde 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 AuthCredential alın:

    Google ile Oturum Açma

    Web

    import { GoogleAuthProvider } from "firebase/auth";
    
    const credential = GoogleAuthProvider.credential(
      googleUser.getAuthResponse().id_token);

    Web

    var credential = firebase.auth.GoogleAuthProvider.credential(
      googleUser.getAuthResponse().id_token);
    Facebook Giriş

    Web

    import { FacebookAuthProvider } from "firebase/auth";
    
    const credential = FacebookAuthProvider.credential(
      response.authResponse.accessToken);

    Web

    var credential = firebase.auth.FacebookAuthProvider.credential(
      response.authResponse.accessToken);
    E-posta ve şifreyle oturum açma

    Web

    import { EmailAuthProvider } from "firebase/auth";
    
    const credential = EmailAuthProvider.credential(email, password);

    Web

    var credential = firebase.auth.EmailAuthProvider.credential(email, password);
  3. AuthCredential nesnesini oturum açan kullanıcının link yöntemine iletin:

    Web

    import { getAuth, linkWithCredential } from "firebase/auth";
    
    const auth = getAuth();
    linkWithCredential(auth.currentUser, credential)
      .then((usercred) => {
        const user = usercred.user;
        console.log("Anonymous account successfully upgraded", user);
      }).catch((error) => {
        console.log("Error upgrading anonymous account", error);
      });

    Web

    auth.currentUser.linkWithCredential(credential)
      .then((usercred) => {
        var user = usercred.user;
        console.log("Anonymous account successfully upgraded", user);
      }).catch((error) => {
        console.log("Error upgrading anonymous account", error);
      });

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

Otomatik temizleme

Projenizi Firebase Authentication with Identity Platform planına yükselttiyseniz Firebase konsolunda otomatik temizlemeyi etkinleştirebilirsiniz. Bu özelliği etkinleştirdiğinizde Firebase'ın 30 günden eski anonim hesapları otomatik olarak silmesine izin vermiş olursunuz. Otomatik temizleme özelliğinin etkin olduğu projelerde anonim kimlik doğrulaması, kullanım sınırlarına veya faturalandırma kotalarına dahil edilmez.

  • Otomatik temizleme etkinleştirildikten sonra oluşturulan anonim hesaplar, oluşturulduktan 30 gün sonra herhangi bir zamanda otomatik olarak silinebilir.
  • Mevcut anonim hesaplar, otomatik temizleme özelliği etkinleştirildikten 30 gün sonra otomatik olarak silinmeye uygun olur.
  • Otomatik temizlemeyi devre dışı bırakırsanız silinmesi planlanan anonim hesaplar silinme planında kalır.
  • Anonim bir hesabı herhangi bir oturum açma yöntemine bağlayarak "yükseltirseniz" hesap otomatik olarak silinmez.

Bu özelliği etkinleştirmeden önce kaç kullanıcının etkileneceğini görmek istiyorsanız ve projenizi Firebase Authentication with Identity Platform'e yükselttiyseniz Cloud Logging'da is_anon'e göre filtreleme yapabilirsiniz.

Sonraki adımlar

Kullanıcılar artık Firebase ile kimlik doğrulayabiliyor. Firebase kurallarını kullanarak kullanıcıların Firebase veritabanınızdaki verilere erişimini kontrol edebilirsiniz.