【问题标题】:Give Google Cloud Vision API access to Firebase Storage授予 Google Cloud Vision API 访问 Firebase 存储的权限
【发布时间】:2016-11-07 18:30:56
【问题描述】:

我在 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.";
};

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

谢谢!

【问题讨论】:

    标签: firebase firebase-storage google-cloud-vision


    【解决方案1】:

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

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

    FWIW,I have a project 正是这样做的,所以我很惊讶默认服务帐户不能同时用于这两个方面。

    【讨论】:

    • 嗨,迈克,感谢您的回答。我会检查服务帐户文档和您发布的说明。我检查了您的 Flaming Specs,我了解到它会从 Firebase 照片创建一个新文件并将该文件传递给 Cloud Vision。我想要一个更简单的解决方案,它只引用 Firebase 图像。
    • 我在学习 Cloud Vision API 教程时创建了一个服务帐户。我授予该帐户对 Firebase 存储桶的读取权限。在使用 Google API Explorer 时,我注意到如果我运行经过身份验证的查询(使用我自己的帐户),那么它就可以工作。但是,我还没有弄清楚如何使用服务帐户对查询进行身份验证。
    • 嗨,迈克。我几乎有类似的问题。你能回答这个问题吗? stackoverflow.com/questions/69101421/…
    【解决方案2】:

    我通过授予存储桶上的所有用户以及对象默认权限来临时解决此问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-05
      • 2021-05-01
      • 1970-01-01
      • 2021-04-08
      • 2022-09-28
      • 1970-01-01
      相关资源
      最近更新 更多