$("#btn1").on('click', function(e) {
e.preventDefault(); // <== disable form submit
const email = signupForm['signup-email'].value;
const password = signupForm['signup-password'].value;
// sign up the user & add firestore data
const auth = firebase.auth();
const promise = auth.createUserWithEmailAndPassword(email, password);
promise.then(user => {
user = firebase.auth().currentUser;
user.sendEmailVerification();
}).catch(error => console.log);
});
$("#btn2").on('click', function(e) {
e.preventDefault(); // <== disable form submit
var user = firebase.auth().currentUser;
if (user.emailVerified) {
// email is verified.
console.log("email is verified")
} else {
// email is not verified.
console.log("email is not verified")
}
});
我希望我的网站在用户输入电子邮件和密码后向用户发送一封电子邮件。
在我的代码中,user.sendEmailVerification();
工作正常并且用户收到一封电子邮件。
如果用户验证他的电子邮件并单击 btn2,控制台应该打印“电子邮件已验证”,但这种情况不会发生。控制台总是打印“电子邮件未验证”。我也尝试过firebase.auth().onAuthStateChanged
方法,不过是一样的。
var user = firebase.auth().currentUser;
firebase.auth().onAuthStateChanged(user => {
if(user.emailVerified){
console.log('email is verified')
}else{
console.log('email not verified')
}
})
验证电子邮件地址是在带外进行的,通常在同一浏览器的另一个选项卡中或在另一个应用程序中进行。这意味着您的应用程序代码不会立即意识到用户配置文件的更新,但只有在发生以下情况之一时才会意识到:
- 他们的 ID 令牌会每小时自动刷新一次。
- 当用户注销并再次登录时。
- 当您通过调用强制刷新应用程序代码中的 ID 令牌时reload在他们的用户个人资料上 https://firebase.google.com/docs/reference/js/firebase.User#reload.
一旦发生其中任何一种情况,用户配置文件将包含来自服务器的最新信息,包括用户的电子邮件验证状态。
另请参阅:
- Angular Firebase 电子邮件验证验证后错误 https://stackoverflow.com/questions/54592255/angular-firebase-email-verification-false-after-verify
- Android Firebase AuthStateListener 电子邮件已验证 https://stackoverflow.com/questions/46580095/android-firebase-authstatelistener-email-verified
- 我可以在不注销的情况下获取更新的 emailVerified 吗? https://stackoverflow.com/questions/41874910/can-i-get-updated-emailverified-without-logging-out
- 单击电子邮件验证链接 firebase 后 user.emailVerified 不会更改 https://stackoverflow.com/questions/37900447/user-emailverified-doesnt-change-after-clicking-email-verification-link-firebas
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)