首页 文章

Firebase未验证电子邮件

提问于
浏览
1

我目前正在使用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

    需要等待正在等待使用 Auth.reload 呼叫的库 . 它应该是

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

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

    这个issue正在报告我已经分享了这个信息 .

相关问题