如何根据用户ID获取Firebase中任何用户的电子邮件?

2024-04-11

我需要获取一个用户对象,特别是用户电子邮件,我将拥有以下格式的用户 ID:

simplelogin:6

所以我需要写一个像这样的函数:

getUserEmail('simplelogin:6')

那可能吗?


可以通过 Admin SDK 实现

Admin SDK 不能在客户端上使用,只能在 Firebase Cloud Functions 中使用,然后您可以从客户端调用它。您将获得以下承诺:(这真的很容易设置云功能 https://firebase.google.com/docs/functions/get-started.)

admin.auth().getUser(uid)
admin.auth().getUserByEmail(email)
admin.auth().getUserByPhoneNumber(phoneNumber)

看这里https://firebase.google.com/docs/auth/admin/manage-users#retrieve_user_data https://firebase.google.com/docs/auth/admin/manage-users#retrieve_user_data


简而言之,这就是您正在寻找的

admin.auth().getUser(data.uid)
  .then(userRecord => resolve(userRecord.toJSON().email))
  .catch(error => reject({status: 'error', code: 500, error}))

完整片段

在下面的代码中,我首先通过检查调用此函数的用户的 uid 是否在该节点下来验证他是否有权显示有关任何人的此类敏感信息userRights/admin.

export const getUser = functions.https.onCall((data, context) => {
  if (!context.auth) return {status: 'error', code: 401, message: 'Not signed in'}

  return new Promise((resolve, reject) => {
    // verify user's rights
    admin.database().ref('userRights/admin').child(context.auth.uid).once('value', snapshot => {
      if (snapshot.val() === true) {
        // query user data
        admin.auth().getUser(data.uid)
          .then(userRecord => {
            resolve(userRecord.toJSON()) // WARNING! Filter the json first, it contains password hash!
          })
          .catch(error => {
            console.error('Error fetching user data:', error)
            reject({status: 'error', code: 500, error})
          })
      } else {
        reject({status: 'error', code: 403, message: 'Forbidden'})
      }
    })
  })
})

顺便说一句,请阅读以下内容之间的区别onCall() and onRequest() here https://stackoverflow.com/questions/51066434/firebase-cloud-functions-difference-between-onrequest-and-oncall.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何根据用户ID获取Firebase中任何用户的电子邮件? 的相关文章

随机推荐

  • Python3中的__builtin__模块在哪里?为何更名?

    我很好奇 builtin 模块及其使用方法 但我在Python3中找不到它 为什么被移动 Python 2 7 gt gt gt import builtin gt gt gt Python 3 2 gt gt gt import buil
  • 更新 EF 4.1 中的记录

    我有一个员工对象说 public class Employee public int Id get set public int Name get set public int Address get set other few 10 s
  • 使用 ruby​​ Net:HTTP API 将文件上传到远程 apache 服务器失败并出现 409 冲突

    下面是一个将文件从本地文件系统上传到远程 Apache 服务器的程序 程序以 409 冲突错误结束 有什么建议我做错了什么吗 我在 httpd conf 中打开了 DAV 并授予了所有必要的权限 但我仍然没有运气 如果需要的话我可以发布ht
  • 我们如何在 google puppeteer 的无头 Chrome 中传递身份验证令牌?

    我想在 puppeteer 标头中传递身份验证令牌 JWT 以用于我的应用程序中使用无头 Chrome 的 pdf 视图 我们使用 React 作为我们的前端 UI 使用 puppeteer 我们可以生成 pdf 但是 pdf 的链接我们需
  • ios中文字符编码问题

    我有一个应用程序支持四种语言 当我当时使用中文用户名登录时 它会显示这样的响应 0 41 intid 41 1 u8a00 u3046 varfirstname u8a00 u3046 2 u8a00 u3046 varlastname u
  • 针对自定义表单类型使用 sonata_type_collection 而不是与另一个实体的属性/关系

    是否可以使用sonata type collection针对自定义表单类型而不是与另一个实体的属性 关系 像这样的事情 formMapper gt add foo sonata type collection array type gt n
  • 我如何使用 php api 读取 gmail 主题?

    在女巫模式下 可以使用 php api 读取电子邮件主题吗 我做这个代码 Get the API client and construct the service object client getClient service new Go
  • 从 SVG 中删除“填充”?

    I have a SVG graphic that draws a circle When I give it a background color with CSS I expected it to show up only in the
  • 轻量级、基于 PHP 的布局框架...知道吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个轻量级的 基于 PHP 的布局框架 就像 Zend Framework 如何使用布局一样 我想创建一个布局模板并仅包含必要页
  • 在 Java 中使用 AudioPlayer

    在我的 swing 应用程序中 我使用一个类在单击鼠标时播放声音 我遇到的问题是 当我调用班级时 声音会播放一次 而当突然单击另一个按钮时 它不会播放声音 我尝试在代码中给出延迟 但 id 仍然无法按我的预期工作 和线程有关系吗 我不擅长线
  • 为什么 Orion 订阅不能按我的意愿工作?

    我在 orion 1 2 1 中有以下订阅 curl include header Content Type application json request POST data binary description subscriptio
  • 正则表达式解析任意深度的函数

    我正在为其中包含的函数解析一种简单的语言 Excel 公式 函数名称必须以任意字母开头 后跟任意数量的字母 数字 并以左括号结尾 中间没有空格 例如MyFunc 该函数可以包含任何参数 包括其他函数 并且必须以右括号结尾 当然 括号内的数学
  • 如何更改多个提交按钮的值? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我如何重命名所有submit当我点击按钮时 我需要脚本 该脚本会改变submit按钮的值类似于所有按钮的 正在加载 我需要完整的 jQ
  • Visual Studio 2013 和 libpng [重复]

    这个问题在这里已经有答案了 我正在尝试使用 VS2013 在 C 中使用 libpng 编写一个简单的 PNG 文件 我从 Nuget 安装了 libpng 并包含了 png h 但无法编译 我得到这个作为我的输出 1 gt main ob
  • 在 php 文件中包含网站

    您好 我正在尝试将另一个网站的网页链接包含到我的网站中 我怎样才能做到这一点 i tried 但在此语句之后所有命令都不会加载 我想将另一个网页直接包含到我的主页中 我的主页完全是用php设计的 但是另外一个是html或者php 我也尝试过
  • 在 .NET Core csproj 文件中更改为 (复数)时出错

    我正在关注 Pluralsight 上的一个关于让 MSTest 项目同时针对 net core 2 2 和 NET 4 7 2 的教程 这需要转到我的测试项目的 csproj 文件并对其进行编辑 以便以下内容
  • Objective C 内存管理,包括块、ARC 和非 ARC

    我使用块已经有一段时间了 但我觉得在 ARC 和非 ARC 环境中 我都怀念一些关于内存管理的事情 我觉得更深层次的理解会让我避免很多内存泄漏 AFNetworking 是我在特定应用程序中对 Blocks 的主要使用 大多数时候 在操作的
  • python google Sheets API 出现无效 JSON 有效负载错误

    我正在尝试使用 Google Sheets API 将新行附加到现有的 Google Sheet 中 身份验证已成功进行 并且代码能够读取工作表的内容 但是 当我尝试使用service spreadsheets values append
  • QT5 迁移和 Boost:if.hpp:宏参数不匹配错误

    在 qt 4 8 中我使用了 boost 1 52 一切都好 现在我尝试转移到 QT5 并得到if hpp Macro argument mismatch线上错误131 BOOST MPL AUX NA SPEC 3 if 在一些QT论坛
  • 如何根据用户ID获取Firebase中任何用户的电子邮件?

    我需要获取一个用户对象 特别是用户电子邮件 我将拥有以下格式的用户 ID simplelogin 6 所以我需要写一个像这样的函数 getUserEmail simplelogin 6 那可能吗 可以通过 Admin SDK 实现 Admi