Создать пользователя
Вы создаете нового пользователя в своем проекте Firebase четырьмя способами:
- Вызовите метод
createUserWithEmailAndPassword()
. - Войдите в систему пользователя в первый раз, используя поставщика федеративных удостоверений , например Google Sign-In, Facebook Login или Apple.
Вы также можете создать новых пользователей с аутентификацией по паролю в разделе «Аутентификация» консоли Firebase на странице «Пользователи».
Получить профиль пользователя
Чтобы получить информацию о профиле пользователя, используйте свойства User
. Есть три способа получить объект User
, представляющий текущего пользователя:
authStateChanges
,idTokenChanges
иuserChanges
: ваши слушатели получат текущийUser
илиnull
, если ни один пользователь не аутентифицирован:FirebaseAuth.instance .authStateChanges() .listen((User? user) { if (user != null) { print(user.uid); } });
Когда приложение запускается, событие запускается после восстановления учетных данных пользователя (если они есть) из локального хранилища, а это означает, что ваши прослушиватели всегда вызываются при инициализации пользовательского состояния. Затем при каждом изменении состояния проверки подлинности будет возникать новое событие с обновленным состоянием пользователя.
Прислушиваясь к состоянию аутентификации, вы можете создать пользовательский интерфейс, реагирующий на эти изменения в состоянии аутентификации.
Объект
UserCredential
, возвращаемый методами аутентификации (signIn
): объектUserCredential
имеет свойствоuser
с текущимUser
:final userCredential = await FirebaseAuth.instance.signInWithCredential(credential); final user = userCredential.user; print(user?.uid);
Свойство
currentUser
экземпляраFirebaseAuth
: если вы уверены, что пользователь в данный момент вошел в систему, вы можете получить доступ кUser
из свойстваcurrentUser
:if (FirebaseAuth.instance.currentUser != null) { print(FirebaseAuth.instance.currentUser?.uid); }
currentUser
может бытьnull
по двум причинам:- Пользователь не авторизован.
- Объект авторизации не завершил инициализацию. Если вы используете прослушиватель для отслеживания состояния входа пользователя, вам не нужно обрабатывать этот случай.
Получить информацию о профиле конкретного поставщика услуг пользователя
Чтобы получить информацию профиля, полученную от поставщиков входа, связанных с пользователем, используйте свойство providerData
. Например:
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;
}
}
Обновить профиль пользователя
Вы можете обновить основную информацию о профиле пользователя — отображаемое имя пользователя и URL-адрес фотографии профиля — с помощью методов update
. Например:
await user?.updateDisplayName("Jane Q. User");
await user?.updatePhotoURL("https://example.com/jane-q-user/profile.jpg");
Установить адрес электронной почты пользователя
Вы можете установить адрес электронной почты пользователя с помощью updateEmail()
. Например:
await user?.updateEmail("janeq@example.com");
Отправить пользователю электронное письмо с подтверждением
Вы можете отправить электронное письмо с подтверждением адреса пользователю с помощью sendEmailVerification()
. Например:
await user?.sendEmailVerification();
Вы можете настроить шаблон электронной почты, который используется в разделе «Аутентификация» консоли Firebase на странице «Шаблоны электронной почты». См. Шаблоны электронной почты в Справочном центре Firebase.
Также можно передать состояние через URL-адрес продолжения , чтобы перенаправить обратно в приложение при отправке письма с подтверждением.
Кроме того, вы можете локализовать подтверждающее электронное письмо, обновив код языка в экземпляре Auth перед отправкой электронного письма. Например:
await FirebaseAuth.instance.setLanguageCode("fr");
await user?.sendEmailVerification();
Установить пароль пользователя
Вы можете установить пароль пользователя с помощью updatePassword()
. Например:
await user?.updatePassword(newPassword);
Отправить электронное письмо для сброса пароля
Вы можете отправить электронное письмо для сброса пароля пользователю с помощью sendPasswordResetEmail()
. Например:
await FirebaseAuth.instance
.sendPasswordResetEmail(email: "user@example.com");
Вы можете настроить шаблон электронной почты, который используется в разделе «Аутентификация» консоли Firebase на странице «Шаблоны электронной почты». См. Шаблоны электронной почты в Справочном центре Firebase.
Также можно передать состояние через URL-адрес продолжения , чтобы перенаправить обратно в приложение при отправке электронного письма для сброса пароля.
Кроме того, вы можете локализовать электронное письмо для сброса пароля, обновив код языка в экземпляре Auth перед отправкой электронного письма. Например:
await FirebaseAuth.instance.setLanguageCode("fr");
Вы также можете отправлять электронные письма для сброса пароля из консоли Firebase.
Удалить пользователя
Вы можете удалить учетную запись пользователя с помощью метода delete()
. Например:
await user?.delete();
Вы также можете удалить пользователей из раздела «Аутентификация» консоли Firebase на странице «Пользователи».
Повторная аутентификация пользователя
Некоторые действия, связанные с безопасностью, такие как удаление учетной записи , установка основного адреса электронной почты и изменение пароля , требуют, чтобы пользователь недавно вошел в систему. Если вы выполняете одно из этих действий, а пользователь вошел в систему слишком давно, действие завершается с ошибкой и вызывает FirebaseAuthException
с кодом requires-recent-login
. В этом случае повторите аутентификацию пользователя, получив новые учетные данные для входа от пользователя и передав учетные данные для reauthenticate
. Например:
// Prompt the user to re-provide their sign-in credentials.
// Then, use the credentials to reauthenticate:
await user?.reauthenticateWithCredential(credential);
Импорт учетных записей пользователей
Вы можете импортировать учетные записи пользователей из файла в проект Firebase с помощью команды Firebase CLI auth:import
. Например:
firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14