Firebase не проверяет электронную почту - PullRequest
0 голосов
/ 30 октября 2018

Я сейчас создаю приложение, используя 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)),
    ),

Большое вам спасибо !!

1 Ответ

0 голосов
/ 01 ноября 2018

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...