通过签名网址将文件放到谷歌云存储(GCS)
2022-09-04 19:54:16
我正在尝试使用“签名网址”访问文件并将其上传到 Google Cloud Storage (GCS)。
按照 https://developers.google.com/storage/docs/accesscontrol#Signing-Strings 中的说明进行操作
我做了什么:
- 在 Google Cloud Console 注册了一个“Web 应用程序”。
- 使用已注册 Web 应用程序屏幕的“证书”部分中的“生成新密钥”生成新的私钥。
- 创建要签名的字符串,并使用页面的“如何签名”部分提供的示例代码对其进行签名(只需对Java主程序的硬编码值进行微小的调整)。更新:为gcsSigner创建了一个要点.java。
- 确保签名字符串是 URL 编码的。
- 指定的 HTTP 标头:x-goog-api-version、x-goog-project-id、Content-Type。
- 指定的网址参数:GoogleAccessId、签名、过期。
- 使用Postman(Chrome扩展程序)来模拟PUT请求。
但是,我仍然得到这个(状态:403禁止):
<?xml version='1.0' encoding='UTF-8'?>
<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided. Check your Google secret key and signing method.</Message>
<StringToSign>PUT
text/plain
1384084959392
x-goog-api-version:2
x-goog-project-id:99999
/mybucket/myfile.txt</StringToSign>
</Error>
即使我根据“StringToSign”中的值对字符串进行签名来重试,我仍然会得到相同的错误。
在这里阅读各种相关帖子,但找不到任何解决方案,其中大部分都是指我使用版本2时。x-goog-api-version:1
我错过了什么?任何帮助将不胜感激。