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

Вы можете использовать Firebase Authentication, чтобы ваши пользователи могли аутентифицироваться в 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();