Firebase - 如何检测/观察Firebase用户何时验证其电子邮件,例如onAuthStateChanged

时间:2017-01-09 06:04:36

标签: angular firebase firebase-authentication

我了解要检查用户的电子邮件是否已经过验证,我可以使用

firebase.auth().onAuthStateChanged((user) => {
    console.log(user["emailVerified"]);
})

但是我的问题是,只要用户在收件箱中验证了他们的电子邮件地址,我就会观察/收听并重定向到另一个页面。

根据我的测试,当用户登录,更新其个人资料并注销时会触发onAuthStateChanged,但在用户在其收件箱中验证其电子邮件地址时不会触发。

无论如何,我可以检测到用户何时被验证并自动重定向到另一个页面?

3 个答案:

答案 0 :(得分:2)

我设法通过setInterval函数使其工作,该函数每秒检查用户的emailVerified属性,具有以下内容:

setInterval(function() {
  firebase.auth().currentUser.reload();
  if (firebase.auth().currentUser.emailVerified) {
      console.log("Email Verified!");
      this.navCtrl.setRoot(HomePage);
  }
}, 1000);

答案 1 :(得分:0)

很遗憾,firebase无法解决此问题,我最终在firestore文档上保留了emailVerified标志,以在打开的标签页之间同步状态。

答案 2 :(得分:0)

我最终检查了user变量,而不是调用emailVerified()函数并等待其响应

this.authService.afAuth.onAuthStateChanged(function(user) {
  if(user){
    if(user.emailVerified){
      //Verified
    }
  }
}