我想使用Firebase Auth进行电子邮件/密码注册。问题是我只想在验证使用的电子邮件地址时接受用户身份验证。
通常我们可以使用监听器来检查用户何时登录或不再登录:
Auth.auth().addStateDidChangeListener { (auth, user) in
问题是,当用户点击验证邮件中的链接时,不会触发此侦听器。只有在创建帐户后才会调用它。
在等待用户点击链接时,在循环中执行以下操作:
Auth.auth().currentUser!.reload() {
if !Auth.auth().currentUser!.isEmailVerified {
但问题是我理想地希望管理侦听器回调中的所有auth内容,但是当电子邮件验证状态发生更改时,不会使用侦听器。
我有什么遗失的吗?
我知道在移动设备上您可以使用深层链接,因此邮件中的链接会再次打开应用程序,但这不是我想要的,因为用户可以在他们的计算机上打开邮件,因此问题仍然需要解决。
现在我看到的唯一解决方案就是自己发送一个nsnotification并在我处理所有auth代码的地方处理它,但感觉有点乱。
答案 0 :(得分:1)
以下是一些选项:
emailVerified
。emailVerified
。user.reload()
以更新用户emailVerified
和user.getIdToken(true)
以确保令牌已使用最新版权声明进行更新。另一种方法是上面的变体,即添加continueUrl
,它会在默认电子邮件验证中显示一个继续按钮,以重定向到您知道用户已验证的页面。您还可以使用上述类似的机制通过该页面上的实时数据库而不是登录页面传递状态更改。