Amazon APIは2種類ある
Amazon APIなどで検索すると、2種類のAPIの情報がヒットして混乱することがあります。1つはショッピング商品に関するAmazonアソシエイトのAPI。もう一つは、Amazon Web Service(AWS)のインスタンス制御に関するAPIです。これら2つを区別することなく「Amazon API」と呼んでいるサイトが多いのですが、AmazonアソシエイトAPIは正式にはAmazon Product Advertising APIといいます。今回はこのAmazon Product Advertising APIを使ったPHPの実装について解説します。
Amazonのアクセスキーとシークレットアクセスキーの取得
Access Key IDとSecret Access Keyの取得のページを参考に、Amazonアソシエイトのアクセスキーとシークレットアクセスキーを取得します。OAuthアプリケーションを作らっれた方ならば馴染みがあると思いますが、OAuthのコンシューマーキーやコンシューマーシークレットとほぼ同等の役割を果たします。
Amazon APIで検索するとsubscription_idに関する情報もヒットしますが、こちらはAWSのものですのでご注意ください。
PEAR::Services_Amazonのインストール
以下のコマンドで依存ライブラリも含めてPEAR::Services_Amazonをインストールします。
pear install -a Services_Amazon-beta
sudo pear install -a Services_Amazon-beta
WARNING: "pear/HTTP_Request" is deprecated in favor of "pear/HTTP_Request2"
WARNING: "pear/Net_URL" is deprecated in favor of "pear/Net_URL2"
WARNING: "pear/XML_Parser" is deprecated in favor of "pear/XML_Parser2"
WARNING: "pear/HTTP_Request" is deprecated in favor of "pear/HTTP_Request2"
downloading Services_Amazon-0.9.0.tgz ...
Starting to download Services_Amazon-0.9.0.tgz (18,504 bytes)
......done: 18,504 bytes
downloading HTTP_Request-1.4.4.tgz ...
Starting to download HTTP_Request-1.4.4.tgz (17,109 bytes)
...done: 17,109 bytes
downloading XML_Serializer-0.20.2.tgz ...
Starting to download XML_Serializer-0.20.2.tgz (35,634 bytes)
...done: 35,634 bytes
downloading Cache-1.5.6.tgz ...
Starting to download Cache-1.5.6.tgz (31,384 bytes)
...done: 31,384 bytes
downloading Net_URL-1.0.15.tgz ...
Starting to download Net_URL-1.0.15.tgz (6,303 bytes)
...done: 6,303 bytes
downloading Net_Socket-1.0.10.tgz ...
Starting to download Net_Socket-1.0.10.tgz (5,429 bytes)
...done: 5,429 bytes
downloading XML_Parser-1.3.4.tgz ...
Starting to download XML_Parser-1.3.4.tgz (16,040 bytes)
...done: 16,040 bytes
install ok: channel://pear.php.net/Cache-1.5.6
install ok: channel://pear.php.net/Net_URL-1.0.15
install ok: channel://pear.php.net/Net_Socket-1.0.10
install ok: channel://pear.php.net/XML_Parser-1.3.4
install ok: channel://pear.php.net/HTTP_Request-1.4.4
install ok: channel://pear.php.net/XML_Serializer-0.20.2
install ok: channel://pear.php.net/Services_Amazon-0.9.0
いくつかのパッケージでディプリケートに関するワーニングがでますが、今回は無視して問題ありません。
PHPで商品情報を取得
$linkとしてAmazonのリンクが渡ってきた時に、その商品のAmazon IDを取得して、商品画像をリンク付きでリスト表示するサンプルでコードを書きました。アクセスキーとシークレットアクセスキーとトラッキングIDはどこかで定数として定義しておくと良いでしょう。
require_once 'Services/Amazon.php';
$amazon = new Services_Amazon(ACCESS_KEY, SECRET_KEY, TRACK_ID);
$amazon->setLocale('JP');
$aurl = explode("/", $link);
$aid = $aurl[5];
$options = array(
'ResponseGroup' => 'ItemAttributes,SalesRank,Images');
$result = $amazon->ItemLookup($aid,$options);
$amazonline .= "<li><dl><dt><a href='".$tlink."'><img src='".$result['Item'][0]['MediumImage']['URL']."'></dt><dd>".$result['Item'][0]['ItemAttributes']['Title']."</a></dd></dl></li>\n";
echo $amazonline;
こんな感じで書くと、とりあえず動作します。
次回はAWSの方のAmazon APIの使い方について書こうかな。