验证后无法直接登录,但第二次点击成功



我正在创建一个允许用户通过Firebase API注册/登录的应用程序。流程是用户注册一个新帐户,被带到电子邮件验证页面(此时向用户发送验证电子邮件(,然后他们可以在验证其帐户后登录。问题是,在他们第一次点击"登录"时,警报显示他们仍然需要验证(即使在验证后(,但是当他们再次点击时,它会成功登录。我希望用户能够在验证后直接首次成功登录。提前感谢您的帮助。

private func login() {
let userEmail = textFrom(loginEmail)
let userPassword = textFrom(loginPassword)
let authUser = Auth.auth().currentUser
self.loginButton.loadingIndicator(show: true)
guard let isVerified = authUser?.isEmailVerified else { return }
Auth.auth().signIn(withEmail: userEmail, password: userPassword, completion: {(user, error) in
if let firebaseError = error {
self.loginButton.loadingIndicator(show: false)
self.showError(firebaseError)
}
if authUser != nil && !isVerified {
self.loginButton.loadingIndicator(show: false)
self.presentAlert(withTitle: "Verify Email", message: "Please verify your email first before logging in")
self.clearFields()
} else {
self.loginButton.loadingIndicator(show: false)
self.transitionToHome()
}
})
}

另外,我知道这不是Github,但我是使用Firebase的新手,如果您认为我的逻辑可以改进(此功能在登录按钮的IBAction中调用(,那么请告诉我。谢谢:)

你确定你引用的警报是返回的警报吗?没有其他类似措辞的警报来自其他地方?

如果是这样,那么可以显示它的唯一方法是isVerified是假的,authUser不是 nil(这是多余的,因为如果它是 nil,guard let ...可选链接将立即从函数返回(。

所以看起来authUser.isEmailVerified返回的是假的。您可以通过在以下行添加断点来验证这一点:if authUser != nil && !isVerified {

不知道更多,就不可能说出发生了什么。

相关内容

最新更新