我在使用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"功能)
中执行此操作答案 0 :(得分:1)
如果通过电子邮件验证链接通过带外验证用户电子邮件,则您需要在验证后在客户端上执行以下操作:
currentUser.reload
。这将更新用户的emailVerified属性。currentUser.getIdToken(true)
强制令牌刷新或只是等待令牌刷新并自动获取更改。要更新的令牌上的email_verified
属性需要这样做。Firebase现在允许您在电子邮件验证后返回应用。以下是通过Web客户端的示例: https://firebase.google.com/docs/auth/web/passing-state-in-email-actions
当您从此类操作返回应用程序以重新加载用户/令牌时,您可以使用此功能,因为知道用户刚刚验证了他们的电子邮件。以上还允许您在流程中传递状态。