我在用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“函数中这样做)
发布于 2017-09-18 05:43:27
如果用户电子邮件是通过电子邮件验证链接在频带外进行验证的,那么在验证之后,您需要在客户端上做两件事:
currentUser.reload。这将更新用户上的emailVerified属性。currentUser.getIdToken(true)强制令牌刷新,或者只是等待令牌被刷新并自动获取更改。这是令牌上的email_verified属性要更新所必需的。Firebase现在允许您在电子邮件验证后返回应用程序。下面是一个通过web客户机的示例:https://firebase.google.com/docs/auth/web/passing-state-in-email-actions
当您从这样的操作返回到应用程序时,您可以使用它来重新加载用户/令牌,知道用户刚刚验证了他们的电子邮件。上述功能还允许您在流中传递状态。
https://stackoverflow.com/questions/46268776
复制相似问题