AmazonのProduct Advertising APIを使って、サイトに商品情報を表示させてみます。
AWSのアカウント作成
Product Advertising APIを使用するには、以下の3つが必要になります。
- アクセスキー
- シークレットキー
- アソシエイトタグ
まずはアクセスキーとシークレットキーを取得するために、こちらからAWSのアカウントを作成を行います。
メールアドレスを入力し、パスワードがない場合は「I am a new customer.」を選択して、「Sign in using our secure server」をクリック。
メールアドレスの再入力と名前・パスワードを入力して、「Create account」をクリックします。
アカウント情報を入力します。
「Address Line 1」「ZIP or Postal Code」「Country」「Website or Application Description」が必須の項目のようです。
入力後、規約に問題なければチェックを入れて、「Complete Registration」をクリックします。
アカウントの登録が完了しました。
アクセスキーとシークレットキーの取得
アカウント登録完了画面の下部にある「Manage Your Account」をクリックします。
アクセスキー情報の「こちらのリンク」をクリック。
先ほど登録したメールアドレスとパスワードでログインします。
ポップアップが表示された場合は「セキュリティ認証情報に進む」を選択します。
アクセスキー(アクセスキーIDとシークレットアクセスキー)を選択します。
新しいアクセスキーの作成をクリック。
表示されたポップアップの「アクセスキーを表示」をクリックすると、アクセスキーとシークレットキーが確認できます。
「キーファイルのダウンロード」をクリックで、アクセスキーとシークレットキーの入ったCSVファイルのダウンロードもできます。
シークレットキーは作成した初回しか表示ができないようなので、扱いには注意して下さい。
Amazonアソシエイトの登録
アソシエイトタグを取得するためにAmazonアソシエイトに登録します。
無料アカウント作成をクリック。
メールアドレスを入力し、「初めて利用します。」を選択して、「サインイン」をクリック。
メールアドレスの再入力と名前・パスワードを入力して、「アカウントを作成する」をクリックします。
アカウント情報を入力します。
Webサイト情報を入力します。
電話での認証を行います。
例えば電話番号が「0123456789」の場合、市外局番の「0」を抜いて、先頭に「+81」を追加して、「+81123456789」と入力します。
「今すぐ電話する」をクリックすると、PIN番号が表示されて自動音声の電話がかかってきますので、アナウンスに合わせてダイヤルをプッシュします。
電話での認証が完了すると以下のような画面になるので、契約条件にチェックを入れて「完了」をクリックします。
アソシエイトタグが取得できました。
実際にAmazonアソシエイトで支払いを得るためにはAmazonの審査に通る必要がありますが、単にProduct Advertising APIを使うだけであれば審査に通らなくても使えるようです。
サイトに表示する
書籍のISBNを指定して、書籍情報を取得してみます。
取得のコードはこちらのページのものを流用・一部変更して使用しています。
PHP
<?php--> define("ACCESS_KEY_ID" , 'アクセスキー'); define("SECRET_ACCESS_KEY" , 'シークレットキー'); define("ASSOCIATE_TAG" , 'アソシエイトタグ'); define("ACCESS_URL" , 'http://ecs.amazonaws.jp/onca/xml'); $isbn = '9784865541144'; // 取得したい本のISBN番号を指定 $params = array(); $params['Service'] = 'AWSECommerceService'; $params['Version'] = '2011-08-02'; $params['Operation'] = 'ItemLookup'; $params['ItemId'] = $isbn; $params['IdType'] = 'ISBN'; $params['SearchIndex'] = 'Books'; $params['AssociateTag'] = ASSOCIATE_TAG; $params['ResponseGroup'] = 'ItemAttributes,Offers,Images,Reviews'; $params['Timestamp'] = gmdate('Y-m-d\TH:i:s\Z'); ksort($params); $canonical_string = 'AWSAccessKeyId='.ACCESS_KEY_ID; foreach ($params as $k => $v) { $canonical_string .= '&'.urlencode_RFC3986($k).'='.urlencode_RFC3986($v); } function urlencode_RFC3986($str) { return str_replace('%7E', '~', rawurlencode($str)); } $parsed_url = parse_url(ACCESS_URL); $string_to_sign = "GET\n{$parsed_url['host']}\n{$parsed_url['path']}\n{$canonical_string}"; $signature = base64_encode( hash_hmac('sha256', $string_to_sign, SECRET_ACCESS_KEY, true) ); $url = ACCESS_URL.'?'.$canonical_string.'&Signature='.urlencode_RFC3986($signature); $response = file_get_contents($url); //Amazonへレスポンス $parsed_xml = null; // レスポンスを配列で取得 if (isset($response)) { $parsed_xml = simplexml_load_string($response); } // Amazonへのレスポンスが正常に行われていたら if ($response && isset($parsed_xml) && !$parsed_xml->faultstring && !$parsed_xml->Items->Request->Errors) { foreach ($parsed_xml->Items->Item as $current) { $title = $current->ItemAttributes->Title; // タイトル $author = $current->ItemAttributes->Author; // 著者 $manufacturer = $current->ItemAttributes->Manufacturer; // 出版社 $imgURL = $current->LargeImage->URL; // 本の表紙の大サイズのURL(サイズは小中大から選べる) $bookURL = $current->DetailPageURL; // Amazonの本のページのURL $releaseDate = $current->ItemAttributes->ReleaseDate; // 出版日 $authors = $author[0]; // 著者が複数いる場合 if (count($author) > 1) { for ($i = 1; $i < count($author); $i++) { $authors = $authors. ",". $author[$i]; } } } }
出力部分は以下のように記述しています。
<div class="book"> <div class="book-image"><img src="<?php echo $imgURL; ?>"></div> <div class="book-data"> <p class="book-title"> <a href="<?php echo $bookURL; ?>" target="_blank"> <?php echo $title; ?> </a> </p> <p class="book-author">著者:<?php echo $authors; ?></p> <p class="book-manufacturer">出版社:<?php echo $manufacturer; ?></p> <p class="book-manufacturer">出版日:<?php echo $releaseDate; ?></p> </div> </div>
【参考サイト】
- PHP : Amazon APIを使って商品情報を取得 | DN-Web64
- PHPでISBNを用いてAmazonAPIから本の情報を取得 – Qiita
- Amazon Web Serviceで書籍情報を取得する – 人工知能に関する断創録
- Amazon API を使って、ISBNコードから書籍検索 – きみが思い出になる前に
- Amazon APIによる本の情報取得について(12969)|teratail
コメントが承認されるまで時間がかかります。