Google cloud storage 将Google Cloud Vision API授权给Google存储映像

Google cloud storage 将Google Cloud Vision API授权给Google存储映像,google-cloud-storage,google-cloud-platform,google-vision,Google Cloud Storage,Google Cloud Platform,Google Vision,在Node中,我尝试使用googlecloudvisionapi来分析存储在googlestorage中的图像。我已经成功地base64编码了一个图像并上传了它,但是我想通过对我在Google存储中的文件执行来加速这个过程。我的要求是这样的, {“requests”:[{“image”:{“source”:{“gcsImageUri”:“gs://mybucket/10001.jpg”},“features”:[{“type”:“LABEL_DETECTION”,“maxResults”:10}

在Node中,我尝试使用googlecloudvisionapi来分析存储在googlestorage中的图像。我已经成功地base64编码了一个图像并上传了它,但是我想通过对我在Google存储中的文件执行来加速这个过程。我的要求是这样的,

{“requests”:[{“image”:{“source”:{“gcsImageUri”:“gs://mybucket/10001.jpg”},“features”:[{“type”:“LABEL_DETECTION”,“maxResults”:10}]}

但是我从我的电话中收到这个错误

{“responses”:[{“error”:{“code”:7,“message”:“image annotator::User缺少权限。:访问被拒绝:匿名调用方没有storage.objects.get访问对象mybucket/10001.jpg。”}}]}

我没有为这个请求使用任何google SDK或node_模块,只是一个浏览器API密钥和http模块。我是否必须在云存储中设置一些权限,以允许Vision API访问bucket中的对象?如果是这样,那会是什么呢?我是谷歌云平台的新手,但对AWS IAM角色有着丰富的经验

谢谢,
VIPER

您可能正在匿名调用Cloud Vision API,其中包含一个不可公开读取的GCS图像。您可能提供了API密钥,但API密钥不会对请求进行身份验证。您可以通过以下两种方式之一解决此问题:

  • 向Cloud Vision API发出经过身份验证的请求,以具有读取GCS文件权限的特定用户身份进行身份验证,或

  • 将GCS文件设置为允许匿名读取访问。您可以在控制台中通过对象选中“公共可读”复选框或使用命令行客户机这样做:
    gsutil acl ch-g alluser:R gs://mybucket/10001.jpg


  • 其实有两种方法,第一种是
    1) 打开google cloud vision的存储桶,将有一个名为“公开共享”的选项,并为您要测试的文档标记为“是”。然后运行代码,您将获得所需的结果。因此,通过使用google auth library nodejs,我能够获得一个包含承载令牌的授权头,现在当我使用添加的令牌进行调用时,我收到了这个错误消息:“Project尚未激活vision.googleapis.com API。请为Project google.com启用API:cloudsdktool(#32555940559)。”知道如何将其“激活”到我正在使用的服务帐户吗?谢谢如果未为您的项目启用Vision API,请单击此链接:,然后确保在右上角选择了您的项目,然后单击“启用”。然而,我不认为这是你的问题:“google.com:cloudsdktool”不是你的项目。这是一个演示项目。确保您正在使用自己项目的客户端ID而不是演示项目进行身份验证。看起来您正在使用
    gcloud auth login
    获取身份验证令牌。请尝试下载并使用
    gcloud auth activate service account
    ,或者使用
    GOOGLE\u APPLICATION\u CREDENTIALS
    环境变量来指向服务帐户json文件的路径。