Do uwierzytelniania w Firebase możesz używać Uwierzytelniania Firebase, aby tworzyć i wykorzystywać tymczasowe konta anonimowe. Te tymczasowe anonimowe konta mogą być używane, aby umożliwić użytkownikom, którzy nie zarejestrowali się jeszcze w Twojej aplikacji, pracę z danymi chronionymi przez reguły zabezpieczeń. Jeśli anonimowy użytkownik zdecyduje się zarejestrować w Twojej aplikacji, możesz połączyć jego dane logowania z kontem anonimowym, aby w przyszłości mógł nadal pracować z chronionymi danymi.
Zanim zaczniesz
Jeśli nie masz jeszcze dostępu do konta demonstracyjnego, postępuj zgodnie z instrukcjami w przewodniku Pierwsze kroki.
Włącz logowanie anonimowe:
W konsoli Firebase otwórz Bezpieczeństwo > Uwierzytelnianie.
Na karcie Metoda logowania włącz dostawcę logowania Anonimowe.
Kliknij Zapisz.
Anonimowe uwierzytelnianie w Firebase
Gdy wylogowany użytkownik korzysta z funkcji aplikacji, która wymaga uwierzytelniania 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 zezwolić mu na kontynuowanie pracy na nowym koncie. Możesz na przykład sprawić, że produkty dodane przez użytkownika do koszyka na zakupy przed rejestracją będą dostępne w koszyku na zakupy na nowym koncie. Aby to zrobić, wykonaj te czynności:
Gdy użytkownik się zarejestruje, dokończ proces logowania w przypadku dostawcy uwierzytelniania użytkownika, ale nie wywołuj żadnej z metod
signInWith-. Na przykład uzyskaj token identyfikacji Google użytkownika, token dostępu do Facebooka lub adres e-mail i hasło.Uzyskaj 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 mieć dostęp do danych Firebase konta anonimowego.
Dalsze kroki
Po utworzeniu przez użytkownika nowego konta jest ono przechowywane w ramach projektu w Firebase i może służyć 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 zabezpieczeń bazy danych czasu rzeczywistego Firebase i Cloud Storage możesz pobrać unikalny identyfikator użytkownika, który jest zalogowany, ze zmiennej auth i użyć go do kontrolowania, do jakich danych użytkownik ma dostęp.
Możesz zezwolić użytkownikom na logowanie się w aplikacji za pomocą wielu dostawców uwierzytelniania, łącząc dane logowania dostawcy uwierzytelniania z istniejącym kontem użytkownika.
Aby wylogować użytkownika, wywołaj funkcję signOut():
await FirebaseAuth.instance.signOut();