0

我在使用Firebase开发电子邮件验证期间遇到问题。Ionic 3 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场我总是得到“假”的结果,除非我刷新页面。

什么是正确的方式知道用户的电子邮件目前是否被验证?是否有任何方法可以监视“emailVerified”字段更改并将用户重定向到另一个页面而无需点击按钮? (有企图在“ionViewWillEnter”功能来做到这一点)

回答

1

如果用户的电子邮件通过电子邮件验证链接验证带外,你需要核实后做客户端上的两件事情:

  1. 致电currentUser.reload。这将更新用户的emailVerified属性。
  2. 致电currentUser.getIdToken(true)强制令牌刷新或只是等待令牌刷新并自动获取更改。这是需要更新令牌上的email_verified属性。

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

当你从这样的操作返回到应用程序重新加载用户/令牌知道用户只需验证其电子邮件,您可以使用此功能。以上也可以让你在流程中传递状态。