首页 > 解决方案 > 是否可以使用模拟服务帐户初始化 Firebase Admin SDK?

问题描述

我正在尝试构建一个系统,通过模拟可以访问该项目的 Firestore 数据库的服务帐户,使用生成短期访问令牌而不是服务帐户密钥来访问另一个 Google Cloud 项目中的 Firestore 数据库,以实现更安全的集成. 当我尝试使用这种凭证时,我收到以下错误:

必须使用证书凭据或应用默认凭据初始化 SDK 才能使用 Cloud Firestore API。

我想知道我是否在这里遗漏了一些东西,因为对我来说,使用模拟帐户访问 Firestore 似乎很奇怪。

谢谢!

标签: firebasegoogle-cloud-firestoreservice-accounts

解决方案


是的,可以使用模拟服务帐户初始化 Firebase Admin SDK。应遵循以下步骤:

  1. 使用管理员 SDK 和服务帐户初始化 Firebase 应用后端:
    admin.initializeApp({ 
           credential: admin.credential.cert(service_account_json), 
          })
  1. 为您要模拟的用户获取身份验证令牌:

    const userId = "[impersonating user uid string]" 
    const token = await admin.auth().createCustomToken(userId)
  1. 使用前端 Firebase SDK 对用户进行身份验证:
    const token = "[token string obtained in step 2]" 
    firebase.auth().signInWithCustomToken(token)

推荐阅读