2012年2月25日土曜日

Amazon APIを使って書籍情報を獲得

PHPでAmazon APIを動かしてみる。
とりあえず、下記サイトを参考に実装してみた。

技術ブログ - Amazon APIを使って簡単にランキングを作成する

Amazon Web Serviceに登録後、PEARのServices_Amazonライブラリをインストールする必要がある(らしい)。
しかし、このサイトで解説しているインストール方法はWindowsバージョン。
Mac OSX Lionのローカル環境(XAMPP)にインストールする場合でもほとんど変わらないが、一応手順を記載しておく。

【手順】
$cd /Applications/xampp/xamppfiles/lib/php/pear
$sudo pear install -a HTTP_Request2-alpha
$sudo pear install -a Services_Amazon-beta


※HTTP_Request2とServices_Amazonをインストールする順番を逆にすると、インストールエラーが起こるため注意が必要。


次に上記サイトのサンプルコードをコピーしxampp上で実行してみたが動かない。
Services_Amazonのクラスを呼び出す部分(include_once 'Services/Amazon.php';)でエラーが出ており、どうもServices/Amazon.phpがないらしい。


確かに、インストールしたと思われる場所(/Applications/xampp/xamppfiles/lib/php/pear)を見てもServices/Amazon.phpがない。
どうやら、上記の手順でインストールした場合、各パッケージはcurrentフォルダではなく/usr/lib/php/pearにいるらしい。
参考:endo yuta blog - XAMPPでpearコマンドを使う on mac


そこで、このサイトを参考に/Applications/XAMPP/xamppfiles/etc/内のphp.iniを編集(include_pathに/usr/lib/php/pearを追加)した。


include_pathはパッケージを呼び出す際に参照するフォルダを設定している気がする。
パスはいくつでも設定することができるようなので、可能性があるフォルダは全部ぶち込めばいいと思う。ちなみに、デフォルトの.iniファイルは読み出ししかできないため、コピーしてから編集し置換した。


Apacheを再起動し、再度実行すると
リクエストには、必要なパラメータが含まれていません。必要なパラメータには、AssociateTagなどがあります。”
とのエラーが・・・

2011年7月ごろにAmazonAPIの仕様が変更になったらしく、このサンプルコードのままでは動かないらしい。動かすためには、AssociateTagを設定する必要があるとのこと。

AssociateTagとはAmazonアソシエイトのアカウントを作った際に与えられるトラッキングIDのことらしい。Amazonアソシエイトの登録方法については下記サイトを参考にした。
参考:ajaxtower - Amazon Web サービス入門

AssociateTagの設定方法についてはService_Amazonのドキュメントで調べた。
つまり、Services_Amazonのコンストラクタを生成するときに、3つ目の引数として渡してやればいいらしい。


これで、サンプルコードは動きました。

追記 

Deprecatedエラーがいっぱい出たりします。
この解決方法については下記サイトを参考にしました。
参考:K氏のCentOSサーバ構築メモ - Deprecated:警告を非表示にする


0 件のコメント:

コメントを投稿