向现有用户发送验证电子邮件

时间:2021-02-09 07:45:46

标签: firebase authentication firebase-authentication email-verification

我正在开发具有现有用户群的网络应用程序。电子邮件验证最初并未在登录流程中实施。
我已经成功添加了用于为所有新注册发送验证电子邮件的代码,但我还想制作一个小页面( 或模态),其中将向当前用户显示一个按钮,将验证链接发送给他们收件箱

我使用 createUserWithEmailAndPassword 创建用户的当前注册流程我能够访问 user.user.sendEmailVerification 方法来执行此操作,但找不到任何方法来访问此方法以实现该功能对于现有用户。

是否可以在创建用户后访问 sendEmailVerification 方法?

<块引用>

我假设它可以在 onAuthStateChange 触发器中使用,但实施它会导致糟糕的用户体验(因为我不想在用户每次登录时都提示)< /p>

编辑:

我知道文档说明我们可以使用 firebase.auth().currentUser 来获取当前用户,但是,由于某种原因不起作用。 此外,我在网上发现 references 建议不再使用该方法,他们提到改用 onAuthStateChange 方法,这就是我研究该方法的原因

2 个答案:

答案 0 :(得分:1)

你可以试试这个方法:

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

答案 1 :(得分:1)

不应在 <head> <script> function myFunction() { alert("Page is loaded"); } </script> </head> <body onload="myFunction()"> <h1>Hello World!</h1> </body> 事件中调用 sendEmailVerification(),因为如果用户的电子邮件未经验证,它会在每次页面加载时发出一封电子邮件。

如果 onAuthStateChanged 为 false,您应该改为在页面上显示通知,其中包含向用户发送电子邮件的链接。

这是一个工作示例:

User.emailVerified

Dharmaraj 的回答很好,但这是一个完整的例子。