1

我在 iOS 上使用 Firebase,我想让用户将照片上传到 Firebase 存储。之后,我想使用 Google Cloud Vision API 分析照片。

上传工作正常。

为了分析照片,我指定它使用

image = {
    source = {
        gcsImageUri = "gs://app.name.from.firebase.console/path.to.photo";
    };
};

问题是我收到以下错误

error = {
    code = 7;
    message = "image-annotator::User lacks permission.: Calling GetObjectMetadata with file \"/bigstore/gs://app.name.from.firebase.console/path.to.photo\": cloud.bigstore.ResponseCode.ErrorCode::ACCESS_DENIED: ACCESS_DENIED: gaiaUser/0 does not have OBJECTS_GET access to object gs://app.name.from.firebase.console/path.to.photo.";
};

你对我需要设置什么权限有什么建议吗?

谢谢!

4

2 回答 2

1

我认为这是因为您为同时使用 Cloud Vision API 和 Firebase Storage(只是一个 Google Cloud Storage 存储桶)而创建的服务帐户(GCS 文档)可能无法同时使用它们。您是如何创建服务帐户的?根据这些说明(Cloud Vision 文档)?

您可以通过创建一个有权读取您的存储桶的服务账户来解决此问题(确保 IAM 角色包括对象 GET)。如果尚未将此服务帐户添加到您的默认存储桶和对象 ACL(如果它们是使用存储桶的正确 IAM 角色创建的,它们通常会被添加,但检查是明智的)。

FWIW,我有一个项目正是这样做的,所以我很惊讶默认服务帐户不能同时用于这两个方面。

于 2016-07-06T03:45:09.563 回答
0

我通过向存储桶上的 allUsers 以及对象默认权限授予 Reader 权限来临时解决了这个问题。

于 2016-07-07T21:16:25.970 回答