问题描述
我正在开发具有现有用户群的网络应用程序。电子邮件验证最初并未在登录流程中实施。
我已经成功添加了用于为所有新注册发送验证电子邮件的代码,但我还想制作一个小页面( 或模态),其中将向当前用户显示一个按钮,将验证链接发送给他们收件箱
我使用 createUserWithEmailAndPassword
创建用户的当前注册流程我能够访问 user.user.sendEmailVerification
方法来执行此操作,但找不到任何方法来访问此方法以实现该功能对于现有用户。
是否可以在创建用户后访问 sendEmailVerification
方法?
我假设它可以在 onAuthStateChange
触发器中使用,但实施它会导致糟糕的用户体验(因为我不想在用户每次登录时都提示)
编辑:
我知道文档说明我们可以使用 firebase.auth().currentUser
来获取当前用户,但是,由于某种原因不起作用。
此外,我在网上发现 references 建议不再使用该方法,他们提到改用 onAuthStateChange
方法,这就是我研究该方法的原因
解决方法
你可以试试这个方法:
const btnVerifyEmail = document.getElementById("btn-verify-id")
btnVerifyEmail.onclick = function () {
const user = firebase.auth().currentUser;
user.sendEmailVerification().then(function() {
// Email sent.
console.log("Email Sent")
}).catch(function(error) {
// An error happened.
console.log(error)
});
}
它在文档中提到了 here
,不应在 <head>
<script>
function myFunction() {
alert("Page is loaded");
}
</script>
</head>
<body onload="myFunction()">
<h1>Hello World!</h1>
</body>
事件中调用 sendEmailVerification()
,因为如果用户的电子邮件未经验证,它会在每次页面加载时发出一封电子邮件。
如果 onAuthStateChanged
为 false,您应该改为在页面上显示通知,其中包含向用户发送电子邮件的链接。
这是一个工作示例:
User.emailVerified
Dharmaraj 的回答很好,但这是一个完整的例子。