5月からずっとアナウンスがあったのだが8/15日をもってAmazon APIの仕様が変更される。
まぁギリギリに対処すればいいやと思ってたらギリギリになってしまったので対処しました。
まぁそもそもお前Amazon APIなんて使ってたのかって感じですが、malaさんのAmazon最速検索を外部ソース化して過去のAPI仕様変更にも対応して身内用に置いてました。
ちょっとした小遣いになってるので、使えなくなるのは辛い。
そもそもAmazon APIなんて名前の物はなくて
Amazon Web ServicesがAmazon Product Advertising APIに名称変更になるって所から始まる。
ややこい。
でも名前とかまぁどうでもいい。
仕様変更のメインはsignatureの追加。
パラメータとしてはtimestampも必要になってる。
signatureには具体的にどーゆーのを渡すかと言うと、GETパラメータとリクエスト先URLをHMACでハッシュ化したもの。
キーには個々人に用意される秘密鍵を使うので、サービス提供者をAWSAccessKeyよりももっと厳格にチェック出来るようにするらしい。
Amazon最速検索はXSLTを活かしてJSだけで実装されてるので秘密鍵を入れるわけにも行かずphpでプロクシ作った。
実装は以下を参照させてもらって割りと簡単に出来ますた。
感謝感謝。
[PHP] Amazon Product Advertising API で認証付きリクエストを送る方法まとめ - RinGoon POP!!
関数自体は使わず、siguniture生成の所だけ参考にさせてもらったけど、そもまま使っても問題なく使える。
実装時に唯一詰まった所としてはhash_hmac関数が呼べない、、、
うちのレン鯖はPHPのバージョンが古くて使えないので、自鯖にコード移そうかとも思ったんだけど下のサイトでライブラリを公開されてた。
れぶろぐ - [PHP] PHP4 で HMAC-SHA256 などの hash_hmac() 関数を使えるようにする
超タイムリー。
これで無事動くように、、、と思ったらサンプルと同じsignatureを生成出来るような実装が出来てもリクエストが通らない、、、
何故かと思ってgdgdと調べてたら。
以下の記事に。
AmazonのProduct Advertising API認証プロキシ(REST版・GAE用)ソース - 風柳メモ
XSLTを使用する場合(Styleオプション指定時)、http://webservices.amazon.co.jp/onca/xmlやhttp://ecs.amazonaws.jp/onca/xmlで指定すると認証エラーに。専用のエンドポイント(http://xml-jp.amznxslt.com/onca/xml)の指定が必要らしい。
え、ちょ。。。
そんなの知らねぇ|n'ω'`|
一応、Amazon側の資料。
Transforming Product Advertising API Responses into HTML Using XSLT
XSLT Service URLs
そんなこんなで対応して動くようにはなった。
ただhash_hmac関数は組み込みの関数呼ぶのと違って、ちょっともっさりな感じになりました。
鯖やっぱり移転するかなぁ。
ってかそもそもXSLTを活かしてJSだけでやってたAmazon最速検索にPHP挟むのは何か不粋な感じもするので何とかしたい。
(俺が弄ってる時点で最速でも何でもないけど。
コメントする