Amazon Product Advertising APIのPHP実装

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の使い方について書こうかな。