Tworzenie konta użytkownika
Nowego użytkownika możesz utworzyć w projekcie Firebase na 4 sposoby:
- Wywołaj metodę
createUserWithEmailAndPassword()
. - Zaloguj użytkownika po raz pierwszy przy użyciu dostawcy tożsamości sfederowanej, na przykład przez Logowanie przez Google, Facebooka lub Apple.
Nowych użytkowników z uwierzytelnianiem za pomocą hasła możesz też utworzyć w sekcji Uwierzytelnianie w konsoli Firebase na stronie Użytkownicy.
Pobieranie profilu użytkownika
Aby uzyskać informacje o profilu użytkownika, skorzystaj z właściwości User
. Obiekt User
reprezentujący bieżącego użytkownika można uzyskać na 3 sposoby:
Strumienie
authStateChanges
,idTokenChanges
iuserChanges
: słuchacze otrzymają bieżącą wartośćUser
lubnull
, jeśli żaden użytkownik nie jest uwierzytelniony:FirebaseAuth.instance .authStateChanges() .listen((User? user) { if (user != null) { print(user.uid); } });
Gdy aplikacja się uruchamia, zdarzenie jest wywoływane po przywróceniu danych logowania użytkownika (jeśli istnieją) z pamięci lokalnej. Oznacza to, że detektory są zawsze wywoływane po zainicjowaniu stanu użytkownika. Następnie, po każdej zmianie stanu uwierzytelniania, tworzone jest nowe zdarzenie ze zaktualizowanym stanem użytkownika.
Nasłuchując stanu uwierzytelniania, możesz zbudować interfejs użytkownika, który reaguje na te zmiany stanu uwierzytelniania.
Obiekt
UserCredential
zwrócony przez metody uwierzytelniania (signIn
-): obiektUserCredential
ma właściwośćuser
z bieżącą wartościąUser
:final userCredential = await FirebaseAuth.instance.signInWithCredential(credential); final user = userCredential.user; print(user?.uid);
Właściwość
currentUser
instancjiFirebaseAuth
: jeśli masz pewność, że użytkownik jest zalogowany, dostęp doUser
uzyskasz z poziomu usługicurrentUser
:if (FirebaseAuth.instance.currentUser != null) { print(FirebaseAuth.instance.currentUser?.uid); }
Wartość
currentUser
może być wartościąnull
z dwóch powodów:- Użytkownik nie jest zalogowany.
- Inicjowanie obiektu uwierzytelniania nie zostało zakończone. Jeśli używasz detektora, aby śledzić stan logowania użytkownika, nie musisz się tym zajmować.
Uzyskiwanie informacji o profilu użytkownika specyficznych dla dostawcy
Aby pobrać informacje profilowe pobrane od dostawców logowania połączonych z użytkownikiem, użyj właściwości providerData
. Przykład:
if (user != null) {
for (final providerProfile in user.providerData) {
// ID of the provider (google.com, apple.com, etc.)
final provider = providerProfile.providerId;
// UID specific to the provider
final uid = providerProfile.uid;
// Name, email address, and profile photo URL
final name = providerProfile.displayName;
final emailAddress = providerProfile.email;
final profilePhoto = providerProfile.photoURL;
}
}
Aktualizowanie profilu użytkownika
Za pomocą metod update
możesz aktualizować podstawowe informacje profilowe użytkownika – wyświetlaną nazwę i adres URL zdjęcia profilowego. Przykład:
await user?.updateDisplayName("Jane Q. User");
await user?.updatePhotoURL("https://example.com/jane-q-user/profile.jpg");
Ustawianie adresu e-mail użytkownika
Adres e-mail użytkownika możesz skonfigurować za pomocą metody updateEmail()
. Przykład:
await user?.updateEmail("janeq@example.com");
Wysyłanie e-maila weryfikacyjnego do użytkownika
Aby wysłać do użytkownika e-maila na potrzeby weryfikacji adresu, użyj metody sendEmailVerification()
. Przykład:
await user?.sendEmailVerification();
Na stronie Szablony e-maili możesz dostosować szablon e-maila w sekcji Uwierzytelnianie w konsoli Firebase. Przeczytaj artykuł Szablony e-maili w Centrum pomocy Firebase.
Można też przekazać stan za pomocą adresu URL kontynuacji, aby przekierowywać użytkowników z powrotem do aplikacji podczas wysyłania e-maila weryfikacyjnego.
Możesz też zlokalizować e-maila weryfikacyjnego, aktualizując kod języka w instancji Auth przed wysłaniem wiadomości. Przykład:
await FirebaseAuth.instance.setLanguageCode("fr");
await user?.sendEmailVerification();
Ustawianie hasła użytkownika
Hasło użytkownika możesz ustawić za pomocą metody updatePassword()
. Przykład:
await user?.updatePassword(newPassword);
Wyślij e-maila do resetowania hasła
Za pomocą metody sendPasswordResetEmail()
możesz wysłać do użytkownika e-maila z prośbą o zresetowanie hasła. Przykład:
await FirebaseAuth.instance
.sendPasswordResetEmail(email: "user@example.com");
Na stronie Szablony e-maili możesz dostosować szablon e-maila w sekcji Uwierzytelnianie w konsoli Firebase. Przeczytaj artykuł Szablony e-maili w Centrum pomocy Firebase.
Możesz też przekazywać stan za pomocą adresu URL kontynuacji, aby przekierowywać użytkowników z powrotem do aplikacji podczas wysyłania e-maila do resetowania hasła.
Możesz też zlokalizować e-maila do resetowania hasła, aktualizując kod języka w instancji Auth przed wysłaniem wiadomości. Przykład:
await FirebaseAuth.instance.setLanguageCode("fr");
Możesz też wysyłać e-maile dotyczące resetowania hasła z konsoli Firebase.
Usuwanie konta użytkownika
Konto użytkownika możesz usunąć za pomocą metody delete()
. Przykład:
await user?.delete();
Użytkowników możesz też usuwać w sekcji Uwierzytelnianie w konsoli Firebase na stronie Użytkownicy.
Ponowne uwierzytelnianie użytkownika
Niektóre działania związane z bezpieczeństwem (takie jak usunięcie konta, ustawienie podstawowego adresu e-mail lub zmiana hasła) wymagają ostatniego zalogowania się. Jeśli wykonasz jedną z tych czynności, a użytkownik zalogował się zbyt dawno temu, czynność ta nie powiedzie się i zgłosi FirebaseAuthException
z kodem requires-recent-login
.
W takim przypadku ponownie uwierzytelnij użytkownika, uzyskując od niego nowe dane logowania i przekazując je do usługi reauthenticate
. Przykład:
// Prompt the user to re-provide their sign-in credentials.
// Then, use the credentials to reauthenticate:
await user?.reauthenticateWithCredential(credential);
Importowanie kont użytkowników
Aby zaimportować konta użytkowników z pliku do projektu Firebase, użyj polecenia auth:import
interfejsu wiersza poleceń Firebase. Przykład:
firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14