2016-05-18 130 views
0

我可以将文件匿名上传到我的谷歌云存储存储区,但无法使用策略和签名从HTML页面获取上传文件。Google Cloud Storage使用POST从HTML上传文件。签名问题

我已经花了很多时间阅读的几个职位:

我也试图为HTML POST他们docs..can't描述的链接后跟随谷歌文档,因为我只有1个声望点...

我的政策文件是一个简单的JSON形式非常类似于谷歌文件中的例子。

{ “过期”: “2020-06-16T11:11:11Z”,

“条件”:[

[ “开始-与”, “$键”, “”],

{ “控制列表,acl”: “斗所有者读”},

{ “斗”: “XXXXXXXXX”},

{ “success_action_redirect”:“在这里重定向URL ......我有删除它,由于我的声誉......“},

[ “当量”, “$内容类型”, “应用/ PDF”],

[ “内容长度范围内”,0,百万]

]

}

XX的简单的编辑。

而且,我使用下面的HTML:

政策和签名串已被截断了显示的便利。

<form action="http://storage.googleapis.com/flashbidz_uploads/" 
           method="post" enctype="multipart/form-data"> 
          <input type="text" name="key" value=""> 
          <input type="hidden" name="bucket" value="XXXXX"> 
          <input type="hidden" name="Content-Type" value="application/pdf"> 
          <input type="hidden" name="GoogleAccessId" value="[email protected]"> 
          <input type="hidden" name="acl" value="bucket-owner-read"> 
          <input type="hidden" name="success_action_redirect" value="https://flashbidz.appspot.com/#/sellerhome"> 
          <input type="hidden" name="policy" value="eyJleHBpcm...XQ0KfQ=="> 
          <input type="hidden" name="signature" value="5P5lFuZ...nkTlyY="> 

          <input name="file" type="file"> 
          <input type="submit" value="Upload"> 
         </form> 

当我运行此我收到消息: 我们计算出你所提供的签名不匹配的请求签名。检查您的Google密钥和签名方法。

我下面的过程是从这个网站here创建我的政策的Base64表示,然后使用本网站here创建SHA-256的签名字符串(使用HTML的Base64表示),并与在签名我的服务帐户密钥的private_key_id。

我还使用了密钥的电子邮件形式进行签名以及与服务帐户关联的客户端ID。

我不知道我出错的地方,也不知道如何调试。任何帮助将非常感激,我明白,这个问题上已经有很多帖子。我读过他们(可能没有理解他们)。

谢谢!

回答

0

基本上,您需要首先进行身份验证,这会在您的浏览器会话中添加令牌,稍后您无需显式传递令牌。 (见thisthis

你可以找到一个例子here

+0

感谢@varunpant,我已经在多个应用程序中成功使用OAuth。我会看看你提供的链接,看看是否有更多的线索。我只是想使用B64策略和签名从HTML页面上传。我会在今天晚些时候回复,因为我有时间真正认真看待你的建议。谢谢! –

相关问题