2009-05-09
■ Amazon Product Advertising APIの認証の件
参考:http://chalow.net/2009-05-09-1.html
rubyで書いてみた。
require "base64"
key = "1234567890"
req = [
"AWSAccessKeyId=00000000000000000000",
"ItemId=0679722769",
"Operation=ItemLookup",
"ResponseGroup=ItemAttributes%2COffers%2CImages%2CReviews",
"Service=AWSECommerceService",
"Timestamp=2009-01-01T12%3A00%3A00Z",
"Version=2009-01-06"].join("&")
message = ["GET", "webservices.amazon.com", "/onca/xml", req].join("\n")
hash = OpenSSL::HMAC::digest(OpenSSL::Digest::SHA256.new, key, message)
print Base64.encode64(hash)
#=
http://docs.amazonwebservices.com/AWSECommerceService/latest/DG/index.html?rest-signature.html
のサンプルと合わない。
http://developer.amazonwebservices.com/connect/thread.jspa?threadID=31670&tstart=0
によると、サンプルが間違ってるんじゃね?って話みたい。
ちなみにopensslが古くてSHA256が使えない場合は、HMACの所だけ自前で書けばOK。
2009-06-01追記:ikeyとokeyの初期化がバグってたので修正。2回目以降は正しく動かなくなっていた。
2009-07-04追記:まだ間違ってた。コメント欄参照。
require "digest/sha2" #中略 IPAD = "\x36"# * 64 OPAD = "\x5c"# * 64 def hmac_sha256(key, message) # ikey = IPAD # okey = OPAD ikey = IPAD * 64 okey = OPAD * 64 key.size.times do |i| ikey[i] = key[i] ^ ikey[i] okey[i] = key[i] ^ okey[i] end value = Digest::SHA256.digest(ikey + message) value = Digest::SHA256.digest(okey + value) end print Base64.encode64(hmac_sha256(key, message)) #=> Nace+U3Az4OhN7tISqgs1vdLBHBEijWcBeCqL5xN9xg=
参考:
トラックバック - http://d.hatena.ne.jp/zorio/20090509/1241886502
- アマゾンのProduct Advertising APIにRubyでアクセス
- 無用の科学あるいは錬金術 - Amazon Product Advertising API の認...
- AWSからProduct Advertising APIへ
- Amazon Product Advertising API で認証付きリクエストの動作を確認...
- 今読ミのAmazon API電子署名対応したった
- 青空を探す、旅の記録。 - 8月過ぎても大丈夫。
- Rubyで電子署名 Amazon アソシエイト Web サービス
- Amazon アソシエイト署名認証対応
- おもしろWEBサービス開発日記 - amazon-ecsに署名認証をつけるよう...
- 車輪の再発明 - Amazon Product Advertising API への対応例
- ぷらとろにカル? - 引き続きamazon
リンク元
- 186 http://chalow.net/2009-05-09-1.html
- 58 http://zapanet.info/blog/item/1634
- 54 http://sho.tdiary.net/20090512.html
- 42 http://reader.livedoor.com/reader/
- 39 http://postcard.blog.ocn.ne.jp/itazura/2009/05/product_adverti.html
- 31 http://d.hatena.ne.jp/brazil/20090511/1242030795
- 29 http://d.hatena.ne.jp/
- 23 http://elpeo.jp/diary/20090512.html
- 18 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GGIH_jaJP202JP202&q=Product+Advertising+API
- 18 http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=Product+Advertising+API&num=50
