Tworzenie konta użytkownika
Nowego użytkownika możesz utworzyć w projekcie Firebase na 4 sposoby:
- Wywołaj metodę
createUserWithEmailAndPassword()
. - zalogować użytkownika po raz pierwszy przy użyciu dostawcy tożsamości sfederowanej; takich jak Logowanie przez Google, Facebook Login czy Apple.
Nowych użytkowników z uwierzytelnianiem za pomocą hasła możesz też utworzyć na stronie 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
. Znaleziono
trzy sposoby uzyskania obiektu User
reprezentującego bieżącego użytkownika:
Strumienie
authStateChanges
,idTokenChanges
iuserChanges
: Twoje detektory otrzymają bieżącą wartośćUser
lubnull
, jeśli żaden użytkownik nie uwierzytelnione:FirebaseAuth.instance .authStateChanges() .listen((User? user) { if (user != null) { print(user.uid); } });
Po uruchomieniu aplikacji zdarzenie jest uruchamiane po danych logowania użytkownika (jeśli są dostępne) z pamięć lokalna została przywrócona, co oznacza, że słuchacze zawsze otrzymują jest wywoływane po zainicjowaniu stanu użytkownika. Następnie, gdy uwierzytelnianie zmian stanu użytkownika, zostanie wygenerowane nowe zdarzenie ze zaktualizowanym stanem użytkownika.
Słuchając stanu uwierzytelniania, możesz utworzyć interfejs użytkownika, Reaguje na te zmiany stanu uwierzytelniania.
Obiekt
UserCredential
zwrócony przez uwierzytelnianie (signIn
-) metody: obiektUserCredential
ma właściwośćuser
z bieżącą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 obecnie zalogowany, dostęp doUser
możesz uzyskać zcurrentUser
usługa: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 zachować śledzenia stanu 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żytkownika, należy użyć 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
Możesz aktualizować podstawowe informacje o profilu użytkownika – jego wyświetlaną nazwę.
i adresu URL zdjęcia profilowego za pomocą metod update
. 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
Możesz wysłać e-maila weryfikacyjnego do użytkownika z
Metoda sendEmailVerification()
. Przykład:
await user?.sendEmailVerification();
Możesz dostosować szablon e-maila używany w sekcji Uwierzytelnianie w konsoli Firebase na stronie Szablony e-maili. Zobacz Szablony e-maili w Centrum pomocy Firebase.
Można również przekazywać stan za pomocą dalej – URL – aby przekierować z powrotem do aplikacji podczas wysyłania e-maila weryfikacyjnego.
Możesz też zlokalizować e-maila weryfikacyjnego, aktualizując język. w instancji Auth przed wysłaniem e-maila. 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
Możesz wysłać e-maila do resetowania hasła do użytkownika, który korzysta z: sendPasswordResetEmail()
. Przykład:
await FirebaseAuth.instance
.sendPasswordResetEmail(email: "user@example.com");
Możesz dostosować szablon e-maila używany w sekcji Uwierzytelnianie w konsoli Firebase na stronie Szablony e-maili. Zobacz Szablony e-maili w Centrum pomocy Firebase.
Można również przekazywać stan za pomocą dalej – URL – aby przekierować z powrotem do aplikacji podczas wysyłania e-maila do resetowania hasła.
Możesz też zlokalizować e-mail dotyczący resetowania hasła, aktualizując język w instancji Auth przed wysłaniem e-maila. 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ć z sekcji Uwierzytelnianie Konsola Firebase na stronie Użytkownicy.
Ponowne uwierzytelnianie użytkownika
Niektóre działania związane z bezpieczeństwem, takie jak:
usunięciu konta,
ustawienie głównego adresu e-mail oraz
zmianę hasła – użytkownik musi mieć
niedawno się zalogowałeś(-aś). Jeśli wykonasz jedną z tych czynności, a użytkownik się zaloguje
zbyt dawno temu działanie kończy się niepowodzeniem i wysyła żądanie FirebaseAuthException
z kodem
requires-recent-login
W takim przypadku ponownie uwierzytelnij użytkownika, uzyskując nowe dane logowania.
od użytkownika i przekazując dane logowania 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
Konta użytkowników możesz importować z pliku do projektu Firebase za pomocą
Polecenie auth:import
w interfejsie wiersza poleceń Firebase. Przykład:
firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14