gpt4 book ai didi

firebase - 当用户确认使用 sendEmailVerification 发送的电子邮件时收到通知

转载 作者:行者123 更新时间:2023-12-03 00:45:58 26 4
gpt4 key购买 nike

当用户确认使用 sendEmailVerification 发送的电子邮件时,客户端(网络)是否有办法知道/收到通知?

这对于单页应用程序来说很重要,等待用户确认并完成身份验证后将状态更改为已登录。

最佳答案

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);
}
);
});
}

代码将:

  • 调用 createUserWithEmailAndPassword
  • 调用 sendEmailVerification
  • 调用 showWaitUI(如果给定),客户端可能会在此处显示带有说明的模式(“请检查您的电子邮件以获取确认链接。”)和沙漏
  • 每秒调用 currentUser.reload() 启动一个间隔循环,并在 currentUser.emailVerified==true 身份验证成功或发生错误时停止
  • 如果身份验证成功,则使用 auth().user 进行解析,否则会因错误而拒绝

有了这个你可以做:

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
}
);
}

希望这有帮助:)

关于firebase - 当用户确认使用 sendEmailVerification 发送的电子邮件时收到通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37912615/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com