google storage acl对现有对象进行更改

即时通讯了解如何将所有标题放在一起,以便为开发人员更改谷歌存储上的exixting对象上的acl。我需要手动执行此操作,不需要boto或其他帮助程序库。 我需要做的是基本上将一个对象从公共设置为私有,反之亦然。 这基本上是我在开发者指南中找到的例子
PUT /paris.jpg?acl HTTP/1.1
Host: travel-maps.commondatastorage.googleapis.com
Date: Mon, 15 Feb  2008 21:30:39 GMT
Content-Length: 0
Authorization: GOOG1 GOOGTS7C7FUP3AIRVJTE:Y9gBLAEInIlFv5zlAm9ts=
x-goog-acl: private

<empty entity body>
什么是我不清楚,我陷入困境的是我如何建立签名。 签名由以下内容组成:
Signature = Base64-Encoding-Of(HMAC-SHA1(UTF-8-Encoding-Of(YourGoogleStorageSecretKey, MessageToBeSigned)))
我不知道我应该包括哪些标题部分,排除,换行....组成MessageToBeSigned。 有没有人有一个python示例代码,他正在做类似的事情? 谢谢!     
已邀请:
首先,我建议将JSON api与Google的api客户端库一起使用,这样可以使用各种语言更轻松地进行授权。 其次,我建议使用OAuth而不是HMAC进行身份验证。这更容易,因为您只需通过HTTPS发送访问令牌,而不是找出如何签署请求。每个请求都通过以下方式进行身份验证:
Authorization: OAuth Bearer 1/2093840249809382402890948
话虽如此,请看一下:https://developers.google.com/storage/docs/reference/v1/developer-guidev1#authentication MessageToBeSigned被定义为规范标头,扩展标头和资源的UTF8编码:
MessageToBeSigned = UTF-8-Encoding-Of(
    CanonicalHeaders +
    CanonicalExtensionHeaders +
    CanonicalResource)
标题是:
CanonicalHeaders = HTTP-Verb + "n" +
Content-MD5 + "n" +
Content-Type + "n" +
Date + "n"
等等... 如果您生成错误的消息以进行签名,Google将返回预期的字符串以在响应正文中签名。因此,验证您生成正确字符串的最简单方法是将您的字符串与Google期望的字符串进行比较。     

要回复问题请先登录注册