Ionic 3 firebase 不显示电子邮件已验证

Ionic 3 firebase doesn't show that email is verified

我 运行 在使用 firebase 开发电子邮件验证的过程中遇到了问题。

每当我尝试验证电子邮件地址时,我无法获得用户电子邮件地址已验证的信息。

我有这样的代码:

constructor(private afAuth: AngularFireAuth, public navCtrl: NavController, public navParams: NavParams) {
}

ionViewWillEnter() {
  this.afAuth.auth.onAuthStateChanged(user => {
    if (user && user.emailVerified) {
      this.navCtrl.setRoot(ShoppingListPage);
    }
  });
}

proceedButtonHandler() {
  this.afAuth.auth.onAuthStateChanged(user => {
    if (user && user.emailVerified) {
      this.navCtrl.setRoot(ShoppingListPage);
    }
  });
}

但是在我验证电子邮件地址和 运行 proceedButtonHandler 函数后,在 user.emailVerified 字段中我总是得到 "false" 结果,除非我刷新页面。

了解用户电子邮件当前是否已验证的正确方法是什么?有没有什么方法可以监视 "emailVerified" 字段的变化并在不单击按钮的情况下将用户重定向到另一个页面? (在 "ionViewWillEnter" 函数中尝试这样做)

如果用户邮箱通过邮箱验证进行带外验证link,验证后需要在客户端做两件事:

  1. 呼叫 currentUser.reload。这将更新用户的 emailVerified 属性。
  2. 调用 currentUser.getIdToken(true) 强制刷新令牌或等待令牌刷新并自动获取找零。这是要更新令牌上的 email_verified 属性 所必需的。

Firebase 现在允许您在电子邮件验证后 return 返回应用。这是一个通过网络客户端的例子: https://firebase.google.com/docs/auth/web/passing-state-in-email-actions

当您从此类操作 return 返回应用程序时,您可以使用它重新加载 user/token 知道用户刚刚验证了他们的电子邮件。以上还允许您在流程中传递状态。