amazon Product Advertising API 署名

amazon web services が署名が必要になって、名前も amazon Product Advertising API とかなってたので、コードを変更しなきゃと思ってサンプルページ見たけど、途中に描かれている値が間違っているみたいだ…。

サンプルリクエストに署名を行うためのステップ 【amazonヘルプ】 の、Version=2009-03-31 という文字列が、正しくは Version=2009-01-06 みたいです。

下記のサイトを参考にしました。下記のページだと、ヘルプページと最終出力は同じなのに、入力値が違う!って気づいたので、合わせてみたらちゃんと出来ました。

  • アマゾンのProduct Advertising APIにRubyでアクセス: ふと思う–ちょっと考える (いたずら編)
  • Amazon Product Advertising APIの認証の件 – zorioの日記
require 'hmac/sha2'

require 'base64'

def genreate_hash(original_url)

url_string = original_url.split('&').sort.join('&')

string = ['GET', 'webservices.amazon.com', '/onca/xml', url_string].join("\n")

Base64.encode64(HMAC::SHA256.digest('1234567890', string))

end

上記で original_url

"Service=AWSECommerceService&AWSAccessKeyId=00000000000000000000&Operation=ItemLookup&ItemId=0679722769&ResponseGroup=ItemAttributes%2COffers%2CImages%2CReviews&Version=2009-01-06&Timestamp=2009-01-01T12%3A00%3A00Z"

とすれば、

Nace+U3Az4OhN7tISqgs1vdLBHBEijWcBeCqL5xN9xg=\n

が出力されます。

なお、サンプル通りの文字列でやると、url_string

"Service=AWSECommerceService&AWSAccessKeyId=00000000000000000000&Operation=ItemLookup&ItemId=0679722769&ResponseGroup=ItemAttributes%2COffers%2CImages%2CReviews&Version=2009-03-31&Timestamp=2009-01-01T12%3A00%3A00Z"

となって、

EDWJ1+VXQhAtPDKQ0f+wpaFQcBVDJyTIpDP7BZgxMiA=\n

が出力されます。

コメントを残す

メールアドレスが公開されることはありません。