firebase - 是否可以使用模拟服务帐户初始化 Firebase Admin SDK?
问题描述
我正在尝试构建一个系统,通过模拟可以访问该项目的 Firestore 数据库的服务帐户,使用生成短期访问令牌而不是服务帐户密钥来访问另一个 Google Cloud 项目中的 Firestore 数据库,以实现更安全的集成. 当我尝试使用这种凭证时,我收到以下错误:
必须使用证书凭据或应用默认凭据初始化 SDK 才能使用 Cloud Firestore API。
我想知道我是否在这里遗漏了一些东西,因为对我来说,使用模拟帐户访问 Firestore 似乎很奇怪。
谢谢!
解决方案
是的,可以使用模拟服务帐户初始化 Firebase Admin SDK。应遵循以下步骤:
- 使用管理员 SDK 和服务帐户初始化 Firebase 应用后端:
admin.initializeApp({
credential: admin.credential.cert(service_account_json),
})
- 为您要模拟的用户获取身份验证令牌:
const userId = "[impersonating user uid string]"
const token = await admin.auth().createCustomToken(userId)
- 使用前端 Firebase SDK 对用户进行身份验证:
const token = "[token string obtained in step 2]"
firebase.auth().signInWithCustomToken(token)
推荐阅读
- javascript - 如何从这个 JavaScript 输出中显示特定数量的问题?
- javascript - 创建一个允许您在所有选项卡中查看 HTML 的 chrome 扩展程序
- c++ - 在其他系统上找不到共享库
- python - 用作类属性的 Python 列表的奇怪行为
- java - Java 异步 api 调用 - 触发并忘记 http 调用
- binary-tree - 树遍历算法:为什么左节点总是在右节点之前?
- azure - 这些 csdef 和 cscfg 值的 ARM 模板等效项是什么
- django - DRF 嵌套关系:模型关系
- c++ - Asio SSL 错误“握手:没有可用的协议”
- c# - 正则表达式无法按预期工作