kof*_*fus 8 firebase firebase-authentication
当用户确认使用sendEmailVerification发送的电子邮件时,客户端(Web)是否有办法知道/获得通知?
这对于单个页面应用程序等待,然后在用户确认并完成身份验证后将状态更改为已登录非常重要.
当验证电子邮件并且"当前没有考虑"这样的界面时,似乎FireBase没有直接的方式让客户端得到通知.
我提出了以下解决方案:
function registerUserAndWaitEmailVerification(email, password, showWaitUI) {
return new Promise(function(resolve, reject) {
let interval=null;
firebase.auth().createUserWithEmailAndPassword(email, password).then(
user => {
user.sendEmailVerification().then(
() => {
if (showWaitUI) showWaitUI();
interval = setInterval(() => {
user.reload().then(
() => {
if (interval && user.emailVerified) {
clearInterval(interval);
interval=null;
resolve(user);
}
}, error => {
if (interval) {
clearInterval(interval);
interval=null;
console.log('registerUserAndWaitEmailVerification: reload failed ! '+error.message+' ('+error.code+')');
reject(error);
}
}
);
}, 1000);
}, error => {
console.log('registerUserAndWaitEmailVerification: sendEmailVerification failed ! '+error.message+' ('+error.code+')');
reject(error);
});
}, error => {
console.log('registerUserAndWaitEmailVerification: createUserWithEmailAndPassword failed ! '+error.message+' ('+error.code+')');
reject(error);
}
);
});
}
Run Code Online (Sandbox Code Playgroud)
代码将:
你可以这样做:
function showRegisterUI() {
// show a modal with instructions ('Please check your email for the confirmation link.') and an hourglass
}
registerUserAndWaitEmailVerification(email, password, showRegisterUI).then(
user => {
// uid in user.uid
, error => {
// alert user with error.message, go back to login screen
}
);
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助 :)
| 归档时间: |
|
| 查看次数: |
1503 次 |
| 最近记录: |