从电子邮件获取用户身份验证(未登录)

时间:2021-04-09 12:06:25

标签: javascript firebase firebase-authentication

通过用户的电子邮件,我想在用户未登录的情况下从 firebase.auth() 获取用户的 ID。我的代码使用 VueJS。有没有办法做到这一点?

我已经在 Node.JS 中搜索并找到了这个,但我不确定这是否也是在 VueJS 中执行此操作的正确方法。

admin
.auth()
.getUserByEmail(email)
.then((userRecord) => {
  // See the UserRecord reference doc for the contents of userRecord.
  console.log(`Successfully fetched user data: ${userRecord.toJSON()}`);
})
.catch((error) => {
  console.log('Error fetching user data:', error);
});

这是仅基于电子邮件(未登录)获取 uid 的正确方法吗 谢谢

1 个答案:

答案 0 :(得分:1)

<块引用>

这是仅基于电子邮件(未登录)获取 uid 的正确方法

简短回答:是的。

以下方法将使用 Firebase Admin SDK 根据用户的 电子邮件 返回用户 uid

admin
  .auth()
  .getUserByEmail(email)
  .then((userRecord) => {
    return userRecord.getUid();
  })
  .catch((error) => {
    console.log('Error fetching user data:', error);
  });

与此同时,如果您指的是另一个 AUTH 提供商电子邮件地址,则此方法将失败:

<块引用>

警告:对于电子邮件查找,您只能搜索主要(顶级)电子邮件,而不能搜索特定于提供商的电子邮件。例如,如果使用不同电子邮件 facebookUser@example.com 的 Facebook 帐户链接到使用电子邮件 user@example.com 的现有用户,则调用 getUserByEmail("facebookUser@example.com") 将不会产生任何结果,而 getUserByEmail("user @example.com") 将返回预期的用户。在默认的“每封电子邮件一个帐户”设置的情况下,用于登录的第一封电子邮件将用作顶级电子邮件,除非之后进行修改。设置“每封邮件多个账户”时,除非手动更新,否则仅在创建密码用户时设置主邮件。

注意:Admin SDK 旨在在安全环境中使用,通常不应在基于 Web 的应用程序客户端中使用。