Ionic 3 firebase没有显示电子邮件已经过验证

时间:2017-09-17 20:51:55

标签: firebase ionic-framework firebase-authentication ionic3 angularfire2

我在使用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"结果,除非我刷新页面。

了解用户的电子邮件目前是否经过验证的正确方法是什么?有没有什么方法可以关注" emailRerified"字段更改并将用户重定向到另一个页面而不单击按钮? (尝试在" ionViewWillEnter"功能)

中执行此操作

1 个答案:

答案 0 :(得分:1)

如果通过电子邮件验证链接通过带外验证用户电子邮件,则您需要在验证后在客户端上执行以下操作:

  1. 致电currentUser.reload。这将更新用户的emailVerified属性。
  2. 调用currentUser.getIdToken(true)强制令牌刷新或只是等待令牌刷新并自动获取更改。要更新的令牌上的email_verified属性需要这样做。
  3. Firebase现在允许您在电子邮件验证后返回应用。以下是通过Web客户端的示例: https://firebase.google.com/docs/auth/web/passing-state-in-email-actions

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