当前位置: 首页 > 知识库问答 >
问题:

如何在没有当前用户的情况下检查firebase中的用户电子邮件是否经过验证

黄博艺
2023-03-14

在我的应用程序中,我面临一种情况,即我有用户的电子邮件,但没有密码,因此我无法登录,也无法获得Firebase身份验证。我想知道的currentUser在发送密码重置链接之前是否验证了用户电子邮件,因为重置密码后用户电子邮件将被验证,但我没有currentUser,因此无法使用curruser.isEmailVerified

如何检查?
Firebase 云功能在这里可以使用吗?

说明:用户未登录,用户忘记密码,用户想要重置密码,但我想知道用户是否经过验证,因为在注册时我正在发送验证链接并将该用户存储在我的数据库中,如果电子邮件经过验证,但无法保证用户会点击该链接,但无论用户是否单击链接,用户都将进行身份验证,但验证不是现在确保未经验证的用户尝试重置密码,然后Firebase允许用户这样做 如果用户重置密码,则向用户发送电子邮件以重置密码,那么现在用户已通过验证,但我无法将该用户存储在我的数据中,因为我无法区分已验证的用户和未经验证的用户我想在重置密码完成后存储该未经验证的用户

共有1个答案

邵绪
2023-03-14

如果您打算从 Firebase 客户端 SDK 发送验证电子邮件,则必须登录该用户,并且应该有权访问该用户的电子邮件验证属性。如果您只需要另一种方式来检查用户的电子邮件是否在不登录用户的情况下被验证,那么您可以将 Admin SDK 与云功能结合使用:

getAuth()
  .getUser(uid)
  .then((userRecord) => {
    console.log(userRecord)
  })
  .catch((error) => {
    console.log('Error fetching user data:', error);
  });

在这里,用户记录将包含有关用户电子邮件验证的信息。

然后,您可以使用< code > generatePasswordResetLink()创建一个密码重置链接,但您必须设置一个自定义电子邮件服务来从云功能发送电子邮件。

此外,如果用户可以收到密码重置链接,这意味着他们有权访问电子邮件,因此电子邮件是验证与此。人们可以简单地使用Firebase Auth REST API来请求验证电子邮件或密码重置电子邮件,从而绕过此类检查。如果您严格地想要防止任何人从Firebase客户端SDK获得密码重置链接,您可能需要使用一些额外的凭证来运行您的自定义逻辑。

 类似资料:
  • 你好,我正在做一个天气应用程序,我不需要用户用电子邮件和密码注册。我想用他们的名字注册他们,如果可能的话,把他们的名字存储在firebase中,并在应用程序中为他们命名。如何做到这一点?

  • 问题内容: 我碰到过此PHP代码,无需发送电子邮件即可使用SMTP检查电子邮件地址。 有没有人尝试过类似的方法或对您有用?您能告诉客户/用户输入的电子邮件是否正确并且存在吗? 问题答案: 有时 可以使用两种方法来确定收件人是否确实存在: 您可以连接到服务器,然后发出命令。很少有服务器支持此命令,但正是为此目的而设计的。如果服务器以2.0.0 DSN响应,则该用户存在。 您可以发出,然后查看邮件是否

  • 是否可以在创建 Firebase 用户之前发送验证电子邮件并验证电子邮件?在我的代码中,我只能在从 Firebase 调用使用电子邮件和密码创建用户方法后发送电子邮件验证。即使我没有验证电子邮件,我仍然可以在 Firebase 控制台中看到该电子邮件的条目。

  • 尝试使用Google云功能和Firebase创建REST身份验证系统。这里的Firebase文档说: 要实现这一点,必须创建一个服务器endpoint,该endpoint接受登录凭据(如用户名和密码),如果凭据有效,则返回一个自定义JWT。 我看到我必须做这样的事情: 但是想知道从登录表单验证电子邮件/密码有效性并获取uid(全部在Cloud Functions中)然后发送到的最佳方法?

  • 我知道要检查用户的电子邮件是否经过验证,我可以使用 然而,我的问题是,每当用户在收件箱上验证他们的电子邮件地址时,我都想观察/收听并重定向到另一个页面。 根据我的测试,onAuthStateChanged在用户登录、更新其配置文件和注销时触发,但在用户验证其收件箱中的电子邮件地址时不会触发。 是否有任何方法可以检测用户何时被验证并自动重定向到另一个页面?