如何在Firebase中收到电子邮件验证通知?

时间:2018-05-29 14:19:02

标签: ios firebase firebase-authentication

我想使用Firebase Auth进行电子邮件/密码注册。问题是我只想在验证使用的电子邮件地址时接受用户身份验证。

通常我们可以使用监听器来检查用户何时登录或不再登录:

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

问题是,当用户点击验证邮件中的链接时,不会触发此侦听器。只有在创建帐户后才会调用它。

在等待用户点击链接时,在循环中执行以下操作:

        Auth.auth().currentUser!.reload() {
            if !Auth.auth().currentUser!.isEmailVerified {

但问题是我理想地希望管理侦听器回调中的所有auth内容,但是当电子邮件验证状态发生更改时,不会使用侦听器。

我有什么遗失的吗?

我知道在移动设备上您可以使用深层链接,因此邮件中的链接会再次打开应用程序,但这不是我想要的,因为用户可以在他们的计算机上打开邮件,因此问题仍然需要解决。

现在我看到的唯一解决方案就是自己发送一个nsnotification并在我处理所有auth代码的地方处理它,但感觉有点乱。

1 个答案:

答案 0 :(得分:1)

以下是一些选项:

  1. 设置 启动RTDB节点以跟踪用户的emailVerified
  2. 实施您自己的目标网页以进行电子邮件验证:https://firebase.google.com/docs/auth/custom-email-handler
  3. 在您的目标网页中,验证用户后,请更新该RTDB节点中的emailVerified
  4. 在用户发送电子邮件验证的页面上,收听该节点上的更改。如有更改,请致电user.reload()以更新用户emailVerifieduser.getIdToken(true)以确保令牌已使用最新版权声明进行更新。
  5. 另一种方法是上面的变体,即添加continueUrl,它会在默认电子邮件验证中显示一个继续按钮,以重定向到您知道用户已验证的页面。您还可以使用上述类似的机制通过该页面上的实时数据库而不是登录页面传递状态更改。