我需要在用户确认电子邮件时验证电子邮件是否已确认,因为在我的应用程序的主屏幕中,我打开一个对话框,通知用户他需要确认电子邮件才能使用该应用程序。
虽然它没有确认电子邮件,但是显示对话框,如果关闭,对话框将再次打开。
我的验证如下:
auth.service.ts:
export class AuthService {
usuario: any;
constructor(private afAuth: AngularFireAuth) {}
getUser() {
return new Promise((resolve, reject) => {
this.afAuth.auth.onAuthStateChanged((user: any) => {
if (user) {
this.user = user;
}
resolve(user);
},
(response: any) => {
reject(response);
});
});
}
main.component.ts:
export class MainComponent {
constructor( private authService: AuthService,){
this.checkConfirmEmail();
}
checkConfirmEmail() {
this.authService.getUser().then((user: any) => {
if (user.emailVerified == false) {
this.showConfirmEmail();
}
});
}
}
如上所述,当我刷新页面时,它只会更新user.emailVerified
,我需要一种方法,所以我不必刷新user.emailVerified
的页面来更新。
答案 0 :(得分:0)
更好的实时方法(HTTP轮询费用昂贵,效率低)是建立自己的自定义电子邮件验证着陆页: https://firebase.google.com/docs/auth/custom-email-handler
然后在该登录页面上,您在数据库节点中设置了一些标志,该标志只有该用户可以访问以确认在您应用代码时验证了电子邮件。为了更加安全,您可以将该节点设置为只读并将代码发送到您的服务器(或使用云功能托管的某个http端点),在那里进行验证,然后使用Admin SDK将状态更改写入该用户的节点。
在客户端设备上,用户已登录(并具有对该节点的读取权限),您将监听该数据库节点的更改以检测电子邮件验证。