Uwierzytelniania Firebase możesz używać do tworzenia i używania tymczasowych kont anonimowych na potrzeby uwierzytelniania w Firebase. Tych tymczasowych kont anonimowych można używać, aby umożliwić użytkownikom, którzy nie zarejestrowali się jeszcze w Twojej aplikacji, pracę z danymi chronionymi przez reguły bezpieczeństwa. Jeśli anonimowy użytkownik zdecyduje się zarejestrować w Twojej aplikacji, możesz połączyć jego dane logowania z kontem anonimowym, aby mógł on w przyszłych sesjach nadal pracować z chronionymi danymi.
Zanim zaczniesz
Jeśli jeszcze tego nie zrobisz, wykonaj czynności opisane w przewodniku Pierwsze kroki.
Włącz anonimowe logowanie:
W konsoli Firebase otwórz Zabezpieczenia > Uwierzytelnianie.
Na karcie Metoda logowania włącz dostawcę logowania Anonimowy.
Kliknij Zapisz.
Anonimowe uwierzytelnianie w Firebase
Gdy wylogowany użytkownik korzysta z funkcji aplikacji, która wymaga uwierzytelnienia w Firebase, zaloguj go anonimowo, wywołując signInAnonymously():
try {
final userCredential =
await FirebaseAuth.instance.signInAnonymously();
print("Signed in with temporary account.");
} on FirebaseAuthException catch (e) {
switch (e.code) {
case "operation-not-allowed":
print("Anonymous auth hasn't been enabled for this project.");
break;
default:
print("Unknown error.");
}
}
Przekształcanie konta anonimowego w konto stałe
Gdy anonimowy użytkownik zarejestruje się w Twojej aplikacji, możesz umożliwić mu kontynuowanie pracy na nowym koncie. Możesz na przykład udostępnić elementy dodane przez użytkownika do koszyka przed rejestracją w koszyku nowego konta. Aby to zrobić, wykonaj te czynności:
Gdy użytkownik się zarejestruje, dokończ proces logowania u dostawcy uwierzytelniania użytkownika , ale nie wywołuj żadnej z metod
signInWith. Możesz na przykład pobrać token identyfikatora Google, token dostępu do Facebooka lub adres e-mail i hasło użytkownika.Pobierz obiekt
Credentialdla nowego dostawcy uwierzytelniania:// Google Sign-in final credential = GoogleAuthProvider.credential(idToken: idToken); // Email and password sign-in final credential = EmailAuthProvider.credential(email: emailAddress, password: password); // Etc.Przekaż obiekt
Credentialdo metodylinkWithCredential()użytkownika logującego się:try { final userCredential = await FirebaseAuth.instance.currentUser ?.linkWithCredential(credential); } on FirebaseAuthException catch (e) { switch (e.code) { case "provider-already-linked": print("The provider has already been linked to the user."); break; case "invalid-credential": print("The provider's credential is not valid."); break; case "credential-already-in-use": print("The account corresponding to the credential already exists, " "or is already linked to a Firebase User."); break; // See the API reference for the full list of error codes. default: print("Unknown error."); } ```
Jeśli wywołanie linkWithCredential() się powiedzie, nowe konto użytkownika będzie mogło uzyskać dostęp do danych Firebase konta anonimowego.
Dalsze kroki
Gdy użytkownik utworzy nowe konto, zostanie ono zapisane w projekcie Firebase i będzie można go używać do identyfikowania użytkownika w każdej aplikacji w projekcie, niezależnie od metody logowania.
W aplikacjach możesz pobierać podstawowe informacje o profilu użytkownika z obiektu User. Zobacz Zarządzanie użytkownikami.
W regułach bezpieczeństwa bazy danych czasu rzeczywistego Firebase i Cloud Storage możesz pobrać unikalny identyfikator użytkownika zalogowanego z zmiennej auth i użyć go do kontrolowania, do jakich danych użytkownik może uzyskać dostęp.
Możesz zezwolić użytkownikom na logowanie się w aplikacji za pomocą wielu dostawców uwierzytelniania przez łączenie danych logowania dostawcy uwierzytelniania) z istniejącym kontem użytkownika.
Aby wylogować użytkownika, wywołaj signOut():
await FirebaseAuth.instance.signOut();