Аутентификация с помощью 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 Realtime Database и Cloud Storage вы можете получить уникальный идентификатор вошедшего в систему пользователя из переменной auth и использовать его для управления данными, к которым пользователь может получить доступ.

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

Чтобы выйти из системы пользователя, вызовите signOut() :

await FirebaseAuth.instance.signOut();