无法通过mediaLink从Google云端存储中检索对象

时间:2014-06-03 20:12:07

标签: json acl google-cloud-storage bucket

我写了一个项目,可以很好地上传和下载Google云端存储中的对象。我能够检索内容,流和元数据,但当我得到一个对象的'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”,以便只对通过我的身份验证的用户进行访问网站。

有人可以帮我解决这个问题吗?非常感谢你

1 个答案:

答案 0 :(得分:4)

媒体链接本身并未获得授权。您需要使用媒体链接授权下载,方法与授权任何其他请求的方式相同:通过包含适当的“授权”标题。

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

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