ios - 重新发送 Firebase 电子邮件验证

标签 ios firebase swift3 firebase-authentication

我有一个看起来很傻的问题,但我在任何地方都找不到答案。
我有一个简单的注册 iOS 程序,它依赖于 Firebase Authentication SDK。

在用户创建后的某个时间点:

FIRAuth.auth()?.createUser(withEmail: userName!, password: password!)

在那之后,我向我的用户发送了一封验证电子邮件:
FIRAuth.auth()?.currentUser?.sendEmailVerification(completion:
                        {(error) in
                        if error == nil
                            {self.showSuccessPopUp()} 
                        else
                            {self.showErrorPopUp()}
                    })

一切正常,完全没有问题。

我的问题是:我的用户收到了电子邮件,但出于任何原因没有点击自动生成的确认链接。
稍后,他再次打开应用程序——忘记他已经注册过一次——尝试使用相同的电子邮件地址进行注册。

Firebase 只是说已经使用该电子邮件地址创建了一个用户 - 根据文档,即使用户不是“事件”,也会创建该用户 - 因此我想为我的用户提供“重新发送验证电子邮件”的选项。

我一直在深入研究 Firebase API 文档,但没有解决方案。
有没有人遇到过同样的“问题”?

谢谢你的帮助

最佳答案

虽然晚了,我会在两种情况下回答这个问题:

1:您成功调用了 createUser,但是当用户再次打开应用程序时,firebase.auth() 说他们没有登录

在这种情况下,该帐户存在密码,因此您需要发送“重置密码”电子邮件,而不是身份验证电子邮件

2:您成功调用了 createUser,但是当用户再次打开应用程序时,firebase.auth() 表示他们已登录

在这种情况下,他们已登录,但未经过验证。用

firebase.auth().currentUser.reload() // reloads user fields, like emailVerified:
if (!firebase.auth().currentUser.emailVerified) {
    //resend verification email
} else {
     //login
}

请原谅我使用 javascript 但应该很容易翻译

关于ios - 重新发送 Firebase 电子邮件验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43385571/

相关文章:

javascript - 循环只将一个值打印到我的 file.txt

php - Android 的 FCM 通知

swift3 - 无法实例化 UIStoryboard(名称 : "something", bundle :nil)

ios - 实现导航栏和附加到导航栏底部的扩展 View

ios - Swift 3 中的 "dispatch_apply"是什么?

ios - 关闭变量不释放

Firebase 身份验证匿名登录

ios - 3D Touch、peek 和 pop 崩溃并出现 fatal error : unexpectedly found nil while unwrapping an Optional value

ios - 在 subview 中居中标签

ios - 数组中的图像未显示在 UICollectionview 中