Аутентификация с помощью Firebase с использованием учетных записей на основе пароля на Flutter

Вы можете использовать аутентификацию Firebase, чтобы позволить вашим пользователям аутентифицироваться в Firebase, используя адреса электронной почты и пароли.

Прежде чем начать

  1. Если вы еще этого не сделали, выполните действия, описанные в руководстве по началу работы .

  2. Включить вход по электронной почте/паролю:

    • В разделе «Аутентификация» консоли Firebase откройте страницу «Метод входа» .
    • На странице «Метод входа» включите метод входа по электронной почте и паролю и нажмите « Сохранить» .

Создайте учетную запись на основе пароля

Чтобы создать новую учетную запись пользователя с паролем, вызовите метод createUserWithEmailAndPassword() :

try {
  final credential = await FirebaseAuth.instance.createUserWithEmailAndPassword(
    email: emailAddress,
    password: password,
  );
} on FirebaseAuthException catch (e) {
  if (e.code == 'weak-password') {
    print('The password provided is too weak.');
  } else if (e.code == 'email-already-in-use') {
    print('The account already exists for that email.');
  }
} catch (e) {
  print(e);
}

Обычно это делается на экране регистрации вашего приложения. Когда новый пользователь регистрируется с помощью формы регистрации вашего приложения, выполните все шаги проверки новой учетной записи, необходимые для вашего приложения, например проверку того, что пароль новой учетной записи был введен правильно и соответствует вашим требованиям сложности.

Если новая учетная запись была создана успешно, пользователь также войдет в систему. Если вы прослушиваете изменения в состоянии аутентификации , вашим слушателям будет отправлено новое событие.

После создания новой учетной записи вы можете подтвердить адрес электронной почты пользователя .

Войдите в систему с помощью адреса электронной почты и пароля.

Действия по входу пользователя с паролем аналогичны действиям по созданию новой учетной записи. На экране входа в приложение вызовите signInWithEmailAndPassword() :

try {
  final credential = await FirebaseAuth.instance.signInWithEmailAndPassword(
    email: emailAddress,
    password: password
  );
} on FirebaseAuthException catch (e) {
  if (e.code == 'user-not-found') {
    print('No user found for that email.');
  } else if (e.code == 'wrong-password') {
    print('Wrong password provided for that user.');
  }
}

Следующие шаги

После того как пользователь создает новую учетную запись, эта учетная запись сохраняется как часть вашего проекта Firebase и может использоваться для идентификации пользователя в каждом приложении вашего проекта, независимо от того, какой метод входа использовал пользователь.

В своих приложениях вы можете получить базовую информацию профиля пользователя из объекта User . См. Управление пользователями .

В правилах безопасности базы данных реального времени и облачного хранилища Firebase вы можете получить уникальный идентификатор пользователя, вошедшего в систему, из переменной auth и использовать его для управления тем, к каким данным пользователь может получить доступ.

Вы можете разрешить пользователям входить в ваше приложение с помощью нескольких поставщиков аутентификации , привязав учетные данные поставщика аутентификации к существующей учетной записи пользователя.

Чтобы выйти из системы, вызовите signOut() :

await FirebaseAuth.instance.signOut();