【发布时间】: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