Firebase не проверяет электронную почту

В настоящее время я создаю приложение с использованием Flutter.

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

Сейчас пользователь входит в свою учетную запись с помощью Auth.signInWithEmailAndPassword.

На этом этапе Auth.isEmailVerified возвращает false

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

Пользователь пытается снова войти в систему, но Auth.isEmailVerified по-прежнему возвращает false.

Любые идеи?

Это файл класса auth.dart, который я использую.

https://github.com/AndriousSolutions/auth/blob/master/lib/auth.dart

А это мой код.

   child: MaterialButton(
      minWidth: 200.0,
      height: 42.0,
      onPressed: () async {
        if (_formKey.currentState.validate()) {
          Auth.signInWithEmailAndPassword(
                  email: emailAddressController.text,
                  password: passwordController.text)
              .then((onSuccess) {
            Auth.reload();
            if ((onSuccess)) {
              if (Auth.isEmailVerified) {
                db.createUser(
                    emailAddress: Auth.email,
                    firstName: Tools.getFirstName(Auth.displayName),
                    googleAccount: false);
                Navigator.of(context).pushReplacementNamed(HomePage.tag);
              } else {
                emailVerificationDialog(context);
                Auth.sendEmailVerification();
              }
            }
          }).catchError((e) {
            print(" LSAHJDSAKHDSA " + e);
          });
        }
      },
      color: ThemeSettings.RaisedButtonColor,
      child: Text('Log In', style: TextStyle(color: Colors.white)),
    ),

Огромное спасибо!!

Интеграция Angular - Firebase Analytics
Интеграция Angular - Firebase Analytics
Узнайте, как настроить Firebase Analytics и отслеживать поведение пользователей в вашем приложении Angular.
2
0
475
1

Ответы 1

Глядя на библиотеку, которую вы используете, нужно дождаться вызова Auth.reload. Должен быть

    static Future<bool> reload() async {
      await _user?.reload();
      return _setUserFromFireBase(_user);
    }

Поскольку он не ожидает перезагрузки, ваш код просто продолжает работать и проверяет isEmailVerified, прежде чем у него будет возможность завершить перезагрузку.

Этот проблема сообщает об этом, и я поделился этой информацией.

Другие вопросы по теме