問題タブ [selling-partner-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
153 参照

c# - HTTP ボディを Amazon Selling Partner API GET リクエスト (例: Restricted Data Token API) に追加してハッシュする方法は? C# バージョン

Amazon Selling Partner API Token API を呼び出して RDT トークンを取得しようとしています。Orders API への GET リクエストを成功させる作業中のプログラムがありますが、Orders API への REST リクエストにはヘッダーと URL パラメーターのみが含まれています。トークン API リクエストには、制限付きリソースのリストが保存される HTTP 本文も (追加で) 含まれます。

Amazonは次のように返信します

私のトークンAPIプログラムで。e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855私の問題の鍵です。これは、ヘッダー、URL パラメーター、および本文コンテンツの初期セットからのコンピューターであるハッシュ化されたペイロード (次のリンクの図を参照) です。私のプログラムによって計算されるハッシュ化されたペイロードは、Amazon が本文なしのリクエストに対して返し、受け入れるものと同じです。しかし、Amazon と私のプログラムの Hashed ペイロードは、本文のあるリクエストでは異なります。したがって、私のプログラムは Amazon とは異なる方法で本体を追加およびハッシュすると結論付けました。それが、Amazon がトークン API リクエストを受け入れない理由です。

AWS - 正規のリクエストとは実際には何ですか? Amazonサービスへの完全なリクエストがどのように計算されるか、素晴らしい図があります。

C# コードを使用して HTTP 本文を計算して追加しています。

ハッシュ化された CanonicalRequest 文字列を計算するコードは次のとおりです。

だから、私は行方不明で、どこかでAmazonの慣習に従っていませんが、どこで. 何かがうまくいかない可能性があるポイントは複数ありrestRequest.AddJsonBody(Serialize(request));ます。2)HashRequestBody別の方法で実装する必要があるかもしれません (インターネットのどこかでコードを見つけたか、販売パートナーの API 仕様から Swagger によって生成されたコードを見つけました。

コードを微調整して、同じリクエスト (つまり、計算に使用され、計算の前に正規化されるリクエストの一部) に対して Amazon によって計算されたものとまったく同じハッシュ化されたペイロード (本文を含むリクエストの場合) を生成する方法ハッシュ化されたペイロードの)。