JavaScript Kullanarak Firebase ile Anonim Olarak Kimlik Doğrulama

Firebase ile kimlik doğrulaması yapmak amacıyla geçici anonim hesaplar oluşturmak ve kullanmak için Firebase Kimlik Doğrulamasını 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 sağlamak 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 .

Sen başlamadan önce

  1. Firebase'i JavaScript projenize ekleyin .
  2. Uygulamanızı henüz Firebase projenize bağlamadıysanız bunu Firebase konsolundan yapın.
  3. Anonim kimlik doğrulamayı etkinleştir:
    1. Firebase konsolunda Kimlik Doğrulama 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 Identity Platform ile Firebase Authentication'a yükselttiyseniz otomatik temizlemeyi etkinleştirebilirsiniz. Bu ayarı etkinleştirdiğinizde 30 günden eski anonim hesaplar otomatik olarak silinecektir. Otomatik temizlemenin etkin olduğu projelerde, anonim kimlik doğrulama artık kullanım sınırlarına veya faturalandırma kotalarına dahil edilmeyecektir. Bkz. Otomatik temizleme .

Firebase ile anonim olarak kimlik doğrulaması yapın

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

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

    Web modular API

    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 namespaced API

    firebase.auth().signInAnonymously()
      .then(() => {
        // Signed in..
      })
      .catch((error) => {
        var errorCode = error.code;
        var errorMessage = error.message;
        // ...
      });
    Burası aynı zamanda hataları yakalayıp yönetebileceğiniz yerdir. Hata kodlarının bir listesi için Yetkilendirme Referans Dokümanlarına bakın.
  2. signInAnonymously yöntemi hatasız tamamlanırsa, onAuthStateChanged kayıtlı gözlemci tetiklenir ve anonim kullanıcının hesap verilerini User nesnesinden alabilirsiniz:

    Web modular API

    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 namespaced API

    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 bir hesabı kalıcı bir hesaba dönüştürme

Anonim bir kullanıcı uygulamanıza kaydolduğunda, yeni hesabıyla çalışmalarına devam etmesine izin vermek isteyebilirsiniz; örneğin, kullanıcının kaydolmadan önce alışveriş sepetine eklediği öğeleri yeni hesabında kullanılabilir hale getirmek isteyebilirsiniz. hesabın alışveriş sepeti. Bunu yapmak için aşağıdaki adımları tamamlayı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ğırana kadar (buna dahil olmamak üzere) tamamlayın. Örneğin, kullanıcının Google Kimliği 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 Oturum Açma

    Web modular API

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

    Web namespaced API

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

    Web modular API

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

    Web namespaced API

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

    Web modular API

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

    Web namespaced API

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

    Web modular API

    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 namespaced API

    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 Identity Platform ile Firebase Authentication'a yükselttiyseniz Firebase konsolunda otomatik temizlemeyi etkinleştirebilirsiniz. Bu özelliği etkinleştirdiğinizde Firebase'in 30 günden eski anonim hesapları otomatik olarak silmesine izin vermiş olursunuz. Otomatik temizlemenin etkin olduğu projelerde anonim kimlik doğrulama, kullanım sınırlarına veya faturalandırma kotalarına dahil edilmeyecektir.

  • 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 temizlemenin etkinleştirilmesinden 30 gün sonra otomatik olarak silinmeye uygun olacaktır.
  • Otomatik temizlemeyi kapatırsanız silinmesi planlanan tüm anonim hesaplar, silinmesi planlanmış olarak kalır.
  • Anonim bir hesabı herhangi bir oturum açma yöntemine bağlayarak "yükseltirseniz", hesap otomatik olarak silinmeyecektir.

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

Sonraki adımlar

Artık kullanıcılar Firebase ile kimlik doğrulayabildiğine göre, Firebase kurallarını kullanarak Firebase veritabanınızdaki verilere erişimlerini kontrol edebilirsiniz.