「署名付き URL」を使用して、ファイルにアクセスしたり、Google Cloud Storage (GCS) にファイルをアップロードしたりしようとしています。
https://developers.google.com/storage/docs/accesscontrol#Signing-Stringsの指示に従いました
私がしたこと:
- Google Cloud Console に「ウェブ アプリケーション」を登録しました。
- 登録したWebアプリケーション画面の「証明書」セクションにある「新しい鍵を生成する」を使用して、新しい秘密鍵を生成します。
- 署名する文字列を作成し、ページの「署名方法」セクションで提供されているサンプル コードを使用して署名します (Java メイン プログラムの値をハードコードするための微調整のみ)。更新: GcsSigner.javaの要旨を作成しました。
- 署名付き文字列が URL エンコードされていることを確認してください。
- 指定された HTTP ヘッダー: x-goog-api-version、x-goog-project-id、Content-Type。
- 指定された URL パラメータ: GoogleAccessId、Signature、Expires。
- Postman (Chrome 拡張機能) を使用して、PUT 要求をシミュレートします。
ただし、私はまだこれを取得しています (ステータス: 403 Forbidden):
<?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」の値に基づいて文字列に署名して再試行しても、同じエラーが発生します。
ここで関連するさまざまな投稿を読んでくださいx-goog-api-version:1
。
私は何が欠けていますか?どんな助けでも大歓迎です。