Google云端存储使用POST从HTML上传文件。签名问题

时间:2016-05-18 23:48:40

标签: google-app-engine

我能够匿名上传文件到谷歌云存储桶,但无法使用政策和签名从HTML页面上传文件。

我花了很多时间阅读几篇文章:

我还尝试按照他们的文档中描述的HTML文档进行操作。不能发布链接,因为我只有1个声誉点......

我的政策文件是一个简单的JSON表单,非常类似于Google文档中的示例。

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

“条件”:[

[“starts-with”,“$ key”,“”],

{“acl”:“bucket-owner-read”},

{“bucket”:“XXXXXXXXX”},

{“success_action_redirect”:“此处重定向网址...由于我的声誉,我不得不将其删除...”},

[“eq”,“$ Content-Type”,“application / pdf”],

[“content-length-range”,0,1000000]

}

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="XXXXX@appspot.gserviceaccount.com">
                            <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签名字符串(使用Base64中的Base64表示形式) HTML)并使用我的服务帐户密钥的private_key_id对其进行签名。

我还使用了密钥的电子邮件表单和与服务帐户关联的客户端ID。

我不知道我哪里出错了,也不知道如何调试它。任何帮助都将非常感激,我确实理解这个主题已经有很多帖子。我已经读过它们(可能没有理解它们)。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

您可以找到示例here

相关问题