Firebase ile kimlik doğrulamak için geçici anonim hesaplar oluşturmak ve kullanmak üzere Firebase Authentication özelliğini 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 korumalı verileriyle çalışmaya devam edebilir.
Başlamadan önce
- Henüz yapmadıysanız Firebase'i Android projenize ekleyin.
-
Modülünüzün (uygulama düzeyinde) Gradle dosyasında
(genellikle
<project>/<app-module>/build.gradle.kts
veya<project>/<app-module>/build.gradle
), Android için Firebase Authentication kitaplığının bağımlılığını ekleyin. Kitaplık sürüm oluşturmayı kontrol etmek için Firebase Android BoM kullanmanızı öneririz.dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:34.0.0")) // Add the dependency for the Firebase Authentication library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth") }
Firebase Android BoM kullanıldığında uygulamanız Firebase Android kitaplıklarının daima uyumlu sürümlerini kullanır.
(Alternatif) Firebase kitaplığı bağımlılıklarını BoM kullanmadan ekleyin.
Firebase BoM kullanmamayı tercih ederseniz her Firebase kitaplık sürümünü bağımlılık satırında belirtmeniz gerekir.
Uygulamanızda birden fazla Firebase kitaplığı kullanıyorsanız kitaplık sürümlerini yönetmek için BoM kullanmanızı önemle tavsiye ederiz. Bu sayede tüm sürümlerin uyumlu olması sağlanır.
dependencies { // Add the dependency for the Firebase Authentication library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth:24.0.0") }
- Uygulamanızı henüz Firebase projenize bağlamadıysanız bunu Firebase konsolundan yapın.
- Anonim kimlik doğrulamayı etkinleştirin:
- Firebase konsolunda Auth (Kimlik Doğrulama) 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 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 etkinleştirildiği projelerde anonim kimlik doğrulama artık kullanım sınırlarına veya faturalandırma kotalarına dahil edilmeyecek. Otomatik temizleme başlıklı makaleyi inceleyin.
Firebase ile anonim olarak kimlik doğrulama
Oturumu kapalı 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 oturumunu anonim olarak açın:
- Etkinliğinizin
onCreate
yönteminde,FirebaseAuth
nesnesinin paylaşılan örneğini alın:Kotlin
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- Etkinliğinizi başlatırken kullanıcının oturumunun açık olup olmadığını kontrol edin:
Kotlin
public override fun onStart() { super.onStart() // Check if user is signed in (non-null) and update UI accordingly. val currentUser = auth.currentUser updateUI(currentUser) }
Java
@Override public void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. FirebaseUser currentUser = mAuth.getCurrentUser(); updateUI(currentUser); }
- Son olarak, anonim kullanıcı olarak oturum açmak için
signInAnonymously
işlevini çağırın:Kotlin
auth.signInAnonymously() .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInAnonymously:success") val user = auth.currentUser updateUI(user) } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInAnonymously:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } }
Java
mAuth.signInAnonymously() .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInAnonymously:success"); FirebaseUser user = mAuth.getCurrentUser(); updateUI(user); } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInAnonymously:failure", task.getException()); Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
getCurrentUser
yöntemini kullanabilirsiniz.
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:
- Kullanıcı kaydolduğunda, kullanıcının kimlik doğrulama sağlayıcısı için oturum açma akışını
FirebaseAuth.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. Yeni kimlik doğrulama sağlayıcısı için
AuthCredential
alın:Google ile Oturum Açma
Kotlin
val credential = GoogleAuthProvider.getCredential(googleIdToken, null)
Java
AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);
Facebook ile Giriş
Kotlin
val credential = FacebookAuthProvider.getCredential(token.token)
Java
AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
E-posta ve şifreyle oturum açma
Kotlin
val credential = EmailAuthProvider.getCredential(email, password)
Java
AuthCredential credential = EmailAuthProvider.getCredential(email, password);
AuthCredential
nesnesini, oturum açan kullanıcınınlinkWithCredential
yöntemine iletin:Kotlin
auth.currentUser!!.linkWithCredential(credential) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { Log.d(TAG, "linkWithCredential:success") val user = task.result?.user updateUI(user) } else { Log.w(TAG, "linkWithCredential:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } }
Java
mAuth.getCurrentUser().linkWithCredential(credential) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { Log.d(TAG, "linkWithCredential:success"); FirebaseUser user = task.getResult().getUser(); updateUI(user); } else { Log.w(TAG, "linkWithCredential:failure", task.getException()); Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
linkWithCredential
ç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 sürümüne 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 temizleme özelliğinin etkin olduğu 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 anonim hesaplar, oluşturulmalarından 30 gün sonra herhangi bir zamanda otomatik olarak silinebilir.
- Mevcut anonim hesaplar, otomatik temizleme etkinleştirildikten 30 gün sonra otomatik olarak silinmeye uygun hale gelir.
- Otomatik temizlemeyi devre dışı bırakırsanız silinmesi planlanan tüm anonim hesaplar silinmek üzere planlanmış olarak 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'de is_anon
ile filtreleyebilirsiniz.
Sonraki adımlar
Kullanıcılar artık Firebase ile kimliklerini doğrulayabildiğinden Firebase kurallarını kullanarak Firebase veritabanınızdaki verilere erişimlerini kontrol edebilirsiniz.