Amazon Product Advertising API 電子署名とXSLTのまとめ
AWS(Amazon web service)が、Amazon Product Advertising APIへ名前変更。
名前だけでなく、仕様も変更になったようです。クエリに電子署名をくっつけないと、データを取得できないようになりました。
●電子署名
これまでのクエリに、新しく新設された「Your Secret Access Key」と現時刻のTimestampを利用して暗号化した署名をくっつける必要があります。
phpによるクエリ生成方法はもやしさんのところのコードを利用させていただき、難なく対応できました。
Amazon Product Advertising API への対応(PHP版)
●XSLT
xmlデータに、XSLTスタイルシートを当ててhtmlファイルを生成しているサイトを運営していますので、こちらも対応。
しかし、上記で生成したクエリに、これまで利用していたXSLTスタイルシートを適用したら、エラーが出てしまいました。
&ContentType=text/html&Style=http://sample.com/sample.xsltをくっつけても、エラーコード「SignatureDoesNotMatch」が出てしまいます。
色々調べた結果、ringoon pop!!さんにお尋ねして解決しました。
[PHP] Amazon Product Advertising API で認証付きリクエストを送る方法まとめ
ちなみに webservices.amazon.co.jp に対してXSLTの署名付きリクエストを送ると SignatureDoesNotMatch が返ってきます。理由は不明です。私は xml-jp.amznxslt.com を使っています。お試し下さい。
なるほど。
もやしさんのところで紹介されていた、リクエストURL「http://ecs.amazonaws.jp/onca/xml~」のドメイン部分を、「http://xml-jp.amznxslt.com/onca/xml~」に変更したら、表示されるようになりました。
クエリ部はソートする必要があるため、他のパラメーターと同様に設定します。
もやしさんのコードだと、
$baseurl = 'http://xml-jp.amznxslt.com/onca/xml';
$params = array();
$params['Service'] = 'AWSECommerceService';
$params['AWSAccessKeyId'] = $access_key_id;
$params['Version'] = '2009-03-31';
$params['Operation'] = 'ItemSearch'; // ← ItemSearch オペレーションの例
$params['SearchIndex'] = 'Books';
$params['Keywords'] = 'keyword';
$params['ContentType'] = 'text/html';
$params['Style'] = 'http://sample.com/sample.xsl';
赤字の部分を修正・追加すればOKです。
ドメインの部分は......、ただのバグのような気がします。私はこれで半日つぶしましたorz
[解決!]アマゾンProduct Advertising APIの使用に関する新ガイドライン
アマゾンAPI(Product Advertising API) で「楽器」カテゴリ追加
ブログパーツ公開と悩み eカタログ.com
Yahoo PipesでUserIDを隠す JSONP&Javascript
JSONPデータ配布と、UserID守秘義務って矛盾してない?
Amazonのxsltキャッシュがうざい件とその対処法
Amazon Product Advertising API 電子署名とXSLTのまとめ
Googleカスタマイズ検索を利用した、「売り上げランキング検索」
youtubeAPIの規約
youtubeAPI データー取得時の問題
Twitterブログパーツが重い 対策用独自プログラム
ブログにグーグルマップを貼り付ける方法
楽天APIのand検索に注意
楽天APIとAMAZON Web Service(AWS)のマッシュアップは可能か?
楽天APIベータ版公開
楽天もWeb2.0へ
価格コムAPIを公開
楽天市場 非公開API公開
※当サイト内ページへのリンクがないと、受け付けない仕様になっています
トラックバック一覧




静岡地元ネタは
