Możesz używać Firebase Authentication do tworzenia i używania tymczasowych kont anonimowych do uwierzytelniania w Firebase. Te tymczasowe anonimowe konta mogą być używane do umożliwienia użytkownikom, którzy nie zarejestrowali się jeszcze w Twojej aplikacji, pracy z danymi chronionymi przez reguły zabezpieczeń. Jeśli anonimowy użytkownik zdecyduje się zarejestrować w aplikacji, możesz połączyć jego dane logowania z kontem anonimowym, aby mógł on nadal pracować z chronionymi danymi w kolejnych sesjach.
Zanim zaczniesz
- Jeśli jeszcze tego nie zrobiono, dodaj Firebase do projektu na Androida.
-
W pliku Gradle modułu (na poziomie aplikacji) (zwykle
<project>/<app-module>/build.gradle.kts
lub<project>/<app-module>/build.gradle
) dodaj zależność z biblioteką Firebase Authentication na Androida. Zalecamy używanie Firebase Android BoM do kontrolowania wersji biblioteki.dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.7.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") }
Dzięki użyciu Firebase Android BoMaplikacja zawsze będzie używać zgodnych wersji bibliotek Firebase na Androida.
(Alternatywnie) Dodaj zależności biblioteki Firebase bez używania pakietu BoM
Jeśli zdecydujesz się nie używać Firebase BoM, musisz podać każdą wersję biblioteki Firebase w jej wierszu zależności.
Jeśli w aplikacji używasz kilku bibliotek Firebase, zdecydowanie zalecamy korzystanie z BoM do zarządzania wersjami bibliotek. Dzięki temu wszystkie wersje będą ze sobą 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.1.0") }
- Jeśli nie połączysz jeszcze aplikacji z projektem Firebase, możesz to zrobić w konsoli Firebase.
- Włączanie anonimowego uwierzytelniania:
- W konsoli Firebase otwórz sekcję Autoryzacja.
- Na stronie Metody logowania włącz metodę logowania Anonimowy.
- Opcjonalnie: jeśli Twój projekt został przeniesiony na wyższy abonament Firebase Authentication with Identity Platform, możesz włączyć automatyczne czyszczenie. Gdy włączysz to ustawienie, anonimowe konta, które istnieją od ponad 30 dni, zostaną automatycznie usunięte. W projektach z włączonym automatycznym oczyszczaniem uwierzytelnianie anonimowe nie będzie już wliczane do limitów wykorzystania ani kwot naliczanych za korzystanie z usługi. Zobacz Automatyczne czyszczenie.
Anonimowe uwierzytelnianie w Firebase
Gdy użytkownik wylogowany korzysta z funkcji aplikacji, która wymaga uwierzytelniania w Firebase, możesz zalogować go anonimowo, wykonując te czynności:
- W metodzie
onCreate
aktywności pobierz współdzielony egzemplarz obiektuFirebaseAuth
:Kotlin
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- Podczas inicjowania aktywności sprawdź, czy użytkownik jest obecnie zalogowany:
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); }
- Na koniec zadzwoń pod numer
signInAnonymously
, aby zalogować się jako anonimowy użytkownik: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
, aby uzyskać dane konta użytkownika.
Przekształcanie konta anonimowego w konto stałe
Gdy anonimowy użytkownik zarejestruje się w Twojej aplikacji, możesz zezwolić mu na kontynuowanie pracy na nowym koncie. Możesz na przykład udostępnić w koszyku nowego konta produkty, które użytkownik dodał do koszyka przed rejestracją. Aby to zrobić:
- Gdy użytkownik się rejestruje, dokończ proces logowania w usłudze uwierzytelniania, aż do wywołania jednej z metod
FirebaseAuth.signInWith
. Możesz na przykład pobrać token identyfikatora Google, token dostępu Facebooka lub adres e-mail i hasło użytkownika. Uzyskaj
AuthCredential
dla nowego dostawcy uwierzytelniania:Logowanie przez Google
Kotlin
val credential = GoogleAuthProvider.getCredential(googleIdToken, null)
Java
AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);
Logowanie przez Facebooka
Kotlin
val credential = FacebookAuthProvider.getCredential(token.token)
Java
AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
Logowanie za pomocą adresu e-mail i hasła
Kotlin
val credential = EmailAuthProvider.getCredential(email, password)
Java
AuthCredential credential = EmailAuthProvider.getCredential(email, password);
Przekaż obiekt
AuthCredential
metodzielinkWithCredential
użytkownika logującego się w aplikacji: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); } } });
Jeśli wywołanie funkcji linkWithCredential
się powiedzie, nowe konto użytkownika będzie mogło uzyskać dostęp do danych Firebase na anonimowym koncie.
Automatyczne oczyszczanie
Jeśli Twój projekt został przeniesiony na wyższy abonament Firebase Authentication with Identity Platform, możesz włączyć automatyczne oczyszczanie w konsoli Firebase. Po włączeniu tej funkcji Firebase automatycznie usuwa anonimowe konta, które mają więcej niż 30 dni. W projektach z włączonym automatycznym oczyszczaniem uwierzytelnianie anonimowe nie będzie wliczane do limitów wykorzystania ani kwot na płatności.
- Anonimowe konta utworzone po włączeniu automatycznego czyszczenia mogą zostać usunięte automatycznie w dowolnym momencie po 30 dniach od ich utworzenia.
- Istniejące konta anonimowe będą mogły zostać automatycznie usunięte po 30 dniach od włączenia automatycznego czyszczenia.
- Jeśli wyłączysz automatyczne czyszczenie, wszystkie zaplanowane do usunięcia anonimowe konta pozostaną zaplanowane do usunięcia.
- Jeśli „uaktualnisz” konto anonimowe, łącząc je z dowolną metodą logowania, konto to nie zostanie automatycznie usunięte.
Jeśli chcesz sprawdzić, ilu użytkowników dotyczy ta funkcja, zanim ją włączysz, i masz uaktualniony projekt do wersji Firebase Authentication with Identity Platform, możesz filtrować według opcji is_anon
w Cloud Logging.
Dalsze kroki
Teraz, gdy użytkownicy mogą się uwierzytelniać za pomocą Firebase, możesz kontrolować ich dostęp do danych w bazie danych Firebase za pomocą reguł Firebase.