首页 文章

Firebase电子邮件验证无法正常运行

提问于
浏览
11

WHAT I HAVE

我在我的应用程序中使用 Firebase Authentication ,用户可以使用 Email & Password 进行注册 . 如果用户尚未验证其电子邮件,则会在验证其电子邮件之前禁用某些功能 .

我还有一个按钮来显式触发验证邮件,它只是调用, sendEmailVerification() . 它运行良好,始终发送验证邮件 .

THE PROBLEM

用户获取验证邮件,但当他/她验证并返回应用程序时, isEmailVerified() 始终为false . 所以我的应用程序仍然不允许用户使用所有功能,尽管他/她已经验证了他们的电子邮件 .

但如果他们退出并再次登录, isEmailVerified() 会立即返回true . 但是退出用户并再次登录是不好的 .

它是Firebase中的错误吗?或者我做错了什么?

1 回答

  • 4

    嘿,我知道这是一个很老的线程,但是什么解决了我的问题 FIRAuth.auth()?.currentUser.reload(completion: { (error) in ... })

    对于任何面临这个问题的人 . 我正在使用最新的Firebase版本10.0.1

    更新

    自从我发布解决方案以来,Firebase已经更改了其功能的名称 .

    请注意,可以通过添加stateDidChangeListener来观察对当前用户状态的所有更改 . Auth.auth()?currentUser不会立即更新,所以我所做的就是将当前用户保存到我自己创建和维护的全局变量中 .

    Auth.auth().addStateDidChangeListener { (auth, user) in
     // ...
    }
    

    每当您调用 Auth.auth()?.currentUser.reload() 时,刷新且准备使用的用户对象将通过stateDidChangeListener传递 .

    然后,您可以检查是否有任何更新的数据(即email验证)

相关问题