json - 无法通过其 mediaLink 从 Google Cloud Storage 检索对象

标签 json acl google-cloud-storage bucket

我编写了一个项目,可以很好地向/从 Google Cloud Storage 上传和下载对象。我能够检索内容、流、元数据,但是当我获取对象的“mediaLink”并将其粘贴到浏览器时,我收到此错误:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Login Required",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Login Required"
 }
}

mediaLink URL 的格式如下所示:

https://content.googleapis.com/storage/v1/b/bucketname/o/folder%2Finsidefolder%2Fexample.txt

我在我的网站中通过 OAuth 2.0 流程进行身份验证,并且在 GCS 上上传的所有对象都带有自定义 AccessControlList,我决定将其设置为“allAuthenticatedUsers”,以便仅向通过我的身份验证的用户授予访问权限网站。

谁能帮我解决这个问题吗?非常感谢

最佳答案

媒体链接未经固有授权。您需要使用媒体链接授权下载,就像授权任何其他请求一样:通过包含适当的“授权” header 。

如果不向“AllUsers”提供读取权限,媒体链接将无法在网络浏览器中使用。

此外,“AllAuthenticatedUsers”并不意味着通过您的网站进行身份验证的用户。它的意思是“拥有任何 Google 帐户的任何人。”

关于json - 无法通过其 mediaLink 从 Google Cloud Storage 检索对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24024099/

相关文章:

Json Decode 无法将 json 中的时间戳解析为 Go 结构

javascript - 使用 Google Feed API 的 jQuery 自动 RSS Feed 列表不起作用

node.js - 基于Node.js资源的ACL

python - 没有遍历的 Pyramid ACL

android - 由于某些 ssl 证书问题,媒体使用签名的 url interup 上传到云?

java - JSON 解析 : org. json.JSON.typeMismatch

json - Powershell无需迭代即可直接引用JSON对象

shell - 将一个文件夹的权限克隆到另一个文件夹

google-app-engine - 如何从在谷歌应用引擎上运行的 servlet 发送帖子请求以将字节数组图像保存到谷歌云存储

google-app-engine - Google Blobstore 与 Google Cloud Storage