Firebase Authentication umożliwia tworzenie tymczasowych anonimowych kont i korzystanie z nich aby uwierzytelnić się w Firebase. Te tymczasowe anonimowe konta mogą być używane do: zezwalaj użytkownikom, którzy nie zarejestrowali się jeszcze w Twojej aplikacji, na korzystanie z danych chronionych zgodnie z regułami zabezpieczeń. Jeśli anonimowy użytkownik zdecyduje się zarejestrować w Twojej aplikacji, możesz powiązać dane logowania z anonimowymi zasobami, konta, aby mogły nadal korzystać ze swoich danych chronionych .
Zanim zaczniesz
- Jeśli jeszcze nie masz tego za sobą, dodaj Firebase do swojego projektu na Androida.
-
w pliku Gradle (na poziomie aplikacji) modułu,
(zwykle
<project>/<app-module>/build.gradle.kts
lub<project>/<app-module>/build.gradle
), dodaj zależność z biblioteką Firebase Authentication na Androida. Zalecamy użycie metody Firebase Android BoM aby kontrolować obsługę wersji biblioteki.dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.2.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") }
Korzystając z narzędzia Firebase Android BoM, Twoja aplikacja zawsze używa zgodnych wersji bibliotek Firebase na Androida.
(Wersja alternatywna) Dodaj zależności biblioteki Firebase bez użycia komponentu BoM
Jeśli nie chcesz używać biblioteki Firebase BoM, musisz określić każdą wersję biblioteki Firebase w wierszu zależności.
Pamiętaj, że jeśli używasz wielu bibliotek Firebase w swojej aplikacji, zalecamy korzystanie z BoM do zarządzania wersjami biblioteki. Dzięki temu wszystkie wersje są zgodne.
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:23.0.0") }
- Jeśli Twoja aplikacja nie jest jeszcze połączona z projektem Firebase, możesz to zrobić na stronie konsolę Firebase.
- Włącz anonimowe uwierzytelnianie:
- W konsoli Firebase otwórz sekcję Uwierzytelnianie.
- Na stronie Sign-in Methods (Metody logowania) włącz Anonimowe metody logowania się.
- Opcjonalnie: jeśli Twój projekt został uaktualniony do wersji Firebase Authentication with Identity Platform, możesz włączyć automatyczne czyszczenie. Kiedy jeśli włączysz to ustawienie, anonimowe konta starsze niż 30 dni będą automatycznie Usunięto. W projektach z włączonym automatycznym czyszczeniem anonimowe uwierzytelnianie nie będzie nie są już wliczane do limitów wykorzystania ani limitów rozliczeniowych. Zobacz Czyszczenie automatyczne.
Uwierzytelniaj anonimowo w Firebase
Gdy wylogowany użytkownik używa funkcji aplikacji, która wymaga uwierzytelnienia za pomocą Zaloguj się anonimowo w Firebase, wykonując te czynności:
- Korzystając z metody
onCreate
aktywności, pobierz udostępnioną instancję obiektuFirebaseAuth
:Kotlin+KTX
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- Zanim rozpoczniesz aktywność, sprawdź, czy użytkownik jest obecnie zalogowany:
Kotlin+KTX
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); }
- Na koniec zadzwoń pod numer
signInAnonymously
, by zalogować się jako anonim użytkownik:Kotlin+KTX
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
, aby pobrać dane konta użytkownika.
Przekształcanie konta anonimowego w konto stałe
Gdy anonimowy użytkownik zarejestruje się w Twojej aplikacji, możesz mu na to zezwolić kontynuowanie pracy na nowym koncie – np. Dodawaj produkty do koszyka, zanim użytkownik się zarejestrował dostępnych w koszyku na zakupy nowego konta. W tym celu wykonaj następujące czynności: kroki:
- Gdy użytkownik się zarejestruje, dokończ proces logowania na stronie
do dostawcy uwierzytelniania do
wywołania jednego z
FirebaseAuth.signInWith
metody. Na przykład pobierz token identyfikatora Google użytkownika, Token dostępu Facebooka lub adres e-mail i hasło. Pobierz
AuthCredential
dla nowego dostawcy uwierzytelniania:Logowanie przez Google
Kotlin+KTX
val credential = GoogleAuthProvider.getCredential(googleIdToken, null)
Java
AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);
Logowanie do Facebooka
Kotlin+KTX
val credential = FacebookAuthProvider.getCredential(token.token)
Java
AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
Logowanie się za pomocą adresu e-mail
Kotlin+KTX
val credential = EmailAuthProvider.getCredential(email, password)
Java
AuthCredential credential = EmailAuthProvider.getCredential(email, password);
Przekaż obiekt
AuthCredential
do folderu zalogowanego użytkownika MetodalinkWithCredential
:Kotlin+KTX
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); } } });
Jeśli wywołanie linkWithCredential
się powiedzie, nowe konto użytkownika będzie mogło
uzyskać dostęp do danych Firebase anonimowego konta.
Czyszczenie automatyczne
Po przeniesieniu projektu do Firebase Authentication with Identity Platform możesz: włącz automatyczne czyszczenie w konsoli Firebase. Po włączeniu tej funkcji zezwalasz Firebase automatycznie usuwa anonimowe konta starsze niż 30 dni. W projektach z automatyczną włączone czyszczenie danych, anonimowe uwierzytelnianie nie jest wliczane do limitów wykorzystania ani limitów płatności.
- Wszystkie anonimowe konta utworzone po włączeniu automatycznego czyszczenia mogą zostać automatycznie można usunąć w dowolnym momencie po 30 dniach od utworzenia.
- Istniejące anonimowe konta będą mogły zostać automatycznie usunięte po 30 dniach włączenie automatycznego czyszczenia.
- Jeśli wyłączysz automatyczne czyszczenie, wszystkie anonimowe konta przeznaczone do usunięcia pozostaną aktywne. do usunięcia.
- Po przejściu na nową wersję anonimowe konto, łącząc je z dowolną metodą logowania, nie zostaną automatycznie usunięte.
Jeśli chcesz sprawdzić, ilu użytkowników wpłynie na to, zanim włączysz tę funkcję i
projekt został uaktualniony do Firebase Authentication with Identity Platform, możesz filtrować według tych kryteriów:
is_anon
w Cloud
Logowanie.
Dalsze kroki
Teraz, gdy użytkownicy mogą uwierzytelniać się w Firebase, możesz kontrolować ich dostęp do w bazie danych Firebase za pomocą Reguły Firebase.