Do uwierzytelniania w Firebase możesz używać Uwierzytelniania Firebase, aby tworzyć i wykorzystywać tymczasowe konta anonimowe. Tych tymczasowych kont anonimowych można używać, aby umożliwić użytkownikom, którzy nie zarejestrowali się jeszcze w 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 anonimowe logowanie:
W konsoli Firebase otwórz Bezpieczeństwo > Uwierzytelnianie.
Na karcie Metoda logowania włącz dostawcę logowania Anonimowe.
Kliknij Zapisz.
Anonimowe uwierzytelnianie w Firebase
Gdy użytkownik, który nie jest zalogowany, korzysta z funkcji aplikacji wymagającej 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 udostępnić na nowym koncie produkty, które użytkownik dodał do koszyka na zakupy przed rejestracją. 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. Możesz na przykład uzyskać token identyfikacyjny Google użytkownika, token dostępu Facebooka lub adres e-mail i hasło.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
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 bezpieczeństwa Bazy danych czasu rzeczywistego Firebase i Cloud Storage możesz pobrać unikalny identyfikator zalogowanego użytkownika 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();