Firebase无法验证电子邮件

时间:2018-10-30 19:11:40

标签: firebase dart flutter email-verification

我当前正在使用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 :(得分:0)

需要等待正在使用Auth.reload调用的库。应该是

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

由于它不等待重新加载,因此您的代码只是继续运行,并在有机会完成重新加载之前检查isEmailVerified

issue正在举报我分享了此信息。