【问题标题】:google function: accessing firestore database of another projectgoogle功能:访问另一个项目的firestore数据库
【发布时间】:2019-07-31 08:06:32
【问题描述】:

我希望 Google Cloud 项目 A (project-a-id) 访问另一个 Google Cloud 项目 B (project-b-id) 的 Firestore 数据。同样,我添加了项目 A 默认服务帐户,即。项目B的IAM中project-a-id@appspot.gserviceaccount.com,并将角色设置为Cloud Filestore Editor

在项目 A 的云功能中,我尝试访问项目 A(它自己的)firestore 以及项目 B 的 firestore,但它一直显示两个应用程序的项目 A 默认数据库。代码是:

var primaryAppConfig = {
  databaseURL: 'https://project-a-id.firebaseio.com'
};
var primaryApp = admin.initializeApp(primaryAppConfig, 'primary');
var primarydb = admin.firestore(primaryApp);

var secondaryAppConfig = {
  databaseURL: 'https://project-b-id.firebaseio.com'
};
var secondaryApp = admin.initializeApp(secondaryAppConfig, 'secondary');
var secondarydb = admin.firestore(secondaryApp);

我的印象是,如果项目-a 的默认服务帐户在项目-b 中被赋予权限,它应该会自动获得权限。至少当我以这种方式访问​​谷歌云存储桶时,我发现它适用。

还有其他事情要做吗?谢谢

【问题讨论】:

  • “但它一直显示项目两个应用程序的默认数据库”。我不知道这是什么意思。你在这里具体观察什么?你有没有重现你不理解的行为的代码?
  • 尝试在应用选项中设置projectId选项(尤其是secondaryAppConfig)。
  • @DougStevenson:我所说的 显示相同的数据库 的意思是:如果我在控制台记录 primarydb 和 secondarydb,生成的对象将 project-id 显示为相同的即。项目 ID
  • 感谢@HiranyaJayathilaka:当我在secondaryAppConfig 中添加projectId:project-b-id 时出现权限错误。我必须提到,如果我从 firebase 控制台的 project-b 设置中下载默认服务帐户的私钥,它可以通过在 secondaryAppConfig 中将其作为凭据传递来工作。但是不明白为什么当我在项目-b的IAM中设置项目-a默认服务帐户时它不起作用。
  • 这是错误:Error: 7 PERMISSION_DENIED: Missing or insufficient permissions.

标签: javascript google-cloud-firestore google-cloud-functions firebase-admin


【解决方案1】:

您需要在当前的 firebase 项目中创建应用。

Firebase 控制台 -> 项目设置 -> 常规 -> 添加应用

这些应用可以访问同一个 firestore,但会分别部署在不同的子域下(在 firebaseapp.com 下)。

【讨论】:

  • OP 问题是关于另一个项目而不是应用程序,所以它不会有太大帮助。
【解决方案2】:

我有一个云原生 Firestore,而不是 project-a 中的实时数据库。但是,当我尝试从 project-b 访问它时遇到了同样的问题。
能够通过生成一个可以访问项目-a firestore 的服务帐户、下载凭据并使用以下内容从项目-b 访问相同的服务帐户来解决它:

credential_path = "pathTo/xxxxx.json"
db = firestore.Client.from_service_account_json(credential_path)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-20
    • 2015-02-25
    • 2021-04-02
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    相关资源
    最近更新 更多