我正在尝试使用Google Cloud Storage JSON API通过http调用从存储桶中检索文件。
我正在GCE中与存储桶位于同一项目中的Container中卷曲,并且服务帐户对该存储桶具有读取权限
以下是请求的模式:
https://storage.googleapis.com/{bucket}/{object}
根据API控制台,由于服务帐户提供了“应用程序默认凭据”,因此我不需要任何特别的操作。但是,我一直这样:
Anonymous caller does not have storage.objects.get
我还尝试为该项目创建一个API密钥,并将其附加到url(https://storage.googleapis.com/{bucket}/{object}?key={key}
)上,但仍然出现相同的401错误。
如何授权查询此API的请求?
答案 0 :(得分:1)
答案 1 :(得分:0)
您使用的URL不正确。这些API使用以https://www.googleapis.com/storage/v1/b
开头的URL。
不建议使用API密钥。相反,您应该使用Bearer: token
。我将展示两种方法。
要获取gcloud默认配置的访问令牌:
gcloud auth print-access-token
然后在您的curl
请求中使用令牌。用gcloud命令中的令牌替换TOKEN。
要列出存储桶:
curl -s -H "Authorization: Bearer TOKEN" https://www.googleapis.com/storage/v1/b
curl https://www.googleapis.com/storage/v1/b?key=APIKEY
列出对象:
curl -s -H "Authorization: Bearer TOKEN" https://www.googleapis.com/storage/v1/b/examplebucket/o
curl https://www.googleapis.com/storage/v1/b/examplebucket/o?key=APIKEY