Firebase ile kimlik doğrulamak amacıyla geçici anonim hesaplar oluşturmak ve kullanmak için 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 oturum açma kimlik bilgilerini anonim hesaba bağlayarak gelecekteki oturumlarda korunan verileriyle çalışmaya devam edebilir.
Başlamadan önce
- Firebase'i JavaScript projenize ekleyin.
- Uygulamanızı henüz Firebase projenize bağlamadıysanız bunu Firebase konsolundan yapın.
- Anonim kimlik doğrulamayı etkinleştirin:
- Firebase konsolunda Auth bölümünü açın.
- Oturum Açma Yöntemleri sayfasında Anonim oturum açma yöntemini etkinleştirin.
- İ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 daha eski anonim hesaplar otomatik olarak silinir. Otomatik temizlemenin etkin olduğu projelerde, anonim kimlik doğrulama artık kullanım sınırlarına veya faturalandırma kotalarına dahil edilmez. Otomatik temizlik konusuna bakın.
Firebase ile anonim olarak kimlik doğrulama
Oturumu kapalı olan bir kullanıcı Firebase ile kimlik doğrulama gerektiren bir uygulama özelliği kullandığında aşağıdaki adımları uygulayarak kullanıcının anonim olarak oturum açmasını sağlayın:
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; // ... });
signInAnonymously
yöntemi hata olmadan tamamlanırsaonAuthStateChanged
içine kayıtlı gözlemci tetiklenir ve anonim kullanıcının hesap verileriniUser
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 bir hesabı kalıcı hesaba dönüştürme
Anonim bir kullanıcı uygulamanıza kaydolduğunda, işine yeni hesabıyla devam etmesine izin vermek isteyebilirsiniz. Örneğin, kullanıcının kaydolmadan önce alışveriş sepetine eklediği ürünleri yeni hesabının alışveriş sepetine eklemeyi düşünebilirsiniz. Bunun için aşağıdaki adımları tamamlayın:
- Kullanıcı kaydolduğunda, kullanıcının kimlik doğrulama sağlayıcısı için (
Auth.signInWith
yöntemlerinden birini çağırarak (dahil değil)) oturum açma akışını tamamlayın. Örneğin, kullanıcının Google kimliği jetonunu, Facebook erişim jetonunu veya e-posta adresini ve şifresini alabilirsiniz. Yeni kimlik doğrulama sağlayıcı 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'a 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 şifresiyle oturum açma
Web
import { EmailAuthProvider } from "firebase/auth"; const credential = EmailAuthProvider.credential(email, password);
Web
var credential = firebase.auth.EmailAuthProvider.credential(email, password);
AuthCredential
nesnesini, oturum açan kullanıcınınlink
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 Kimlik Platformu ile Firebase Authentication'a yükselttiyseniz Firebase konsolunda otomatik temizlemeyi etkinleştirebilirsiniz. Bu özelliği etkinleştirdiğinizde Firebase'in 30 günden daha eski anonim hesapları otomatik olarak silmesine izin vermiş olursunuz. Otomatik temizlemenin etkinleştirildiği projelerde, anonim kimlik doğrulama kullanım sınırlarına veya faturalandırma kotalarına dahil edilmez.
- Otomatik temizleme etkinleştirildikten sonra oluşturulan tüm anonim hesaplar, oluşturulduktan 30 gün sonra herhangi bir zamanda otomatik olarak silinebilir.
- Mevcut anonim hesaplar, otomatik temizlik özelliği etkinleştirildikten 30 gün sonra otomatik olarak silinebilir.
- Otomatik temizlemeyi kapatırsanız silinmesi planlanan tüm anonim hesaplar silinmek üzere programlanmış olarak kalır.
- Anonim bir hesabı herhangi bir oturum açma yöntemine bağlayarak "yükseltilir"seniz 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'a yükselttiyseniz Cloud Logging'de is_anon
ölçütüne göre filtreleme yapabilirsiniz.
Sonraki adımlar
Kullanıcılar artık Firebase ile kimlik doğrulaması yapabildiğine göre Firebase kurallarını kullanarak Firebase veritabanınızdaki verilere erişimlerini kontrol edebilirsiniz.