WEBサービス・API/Amazon/Product Advertising API
概要
Amazonの商品情報を、WEBサービスを経由して取得することができるAPI。
公式サイト
-http://affiliate.amazon.co.jp/gp/advertising/api/detail/main.html
-署名認証について
–http://affiliate.amazon.co.jp/gp/associates/help/t126
-Product Advertising APIドキュメント
–http://docs.amazonwebservices.com/AWSECommerceService/latest/DG/
署名認証の導入
2009年8月15日より、WEBサービスにリクエストを送信する際に、署名認証情報を付加して送信しないと、商品情報が取得できないように仕様が変更になった。
8/14までの状態でリクエストを送信してみる。
Service=AWSECommerceService&SubscriptionId=XXXXXXXXXXXXXXXXXXXX&
Operation=ItemSearch&SearchIndex=DVD&ResponseGroup=Medium&
ItemPage=1&Keywords=StarWars
結果
<ItemSearchErrorResponse xmlns="http://ecs.amazonaws.com/doc/2005-10-05/">
<Error>
<Code>MissingParameter</Code>
<Message>The request must contain the parameter Signature.</Message>
</Error>
<RequestID> XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX </RequestID>
</ItemSearchErrorResponse>
署名パラメータがない。
署名の付け方
Product Advertising API アカウントを作成する
http://affiliate-program.amazon.com/gp/flex/advertising/api/sign-in-jp.html
ログイン→Manage Your Account→アクセスキー情報にアクセスして、アクセスキーIDと秘密キーを取得する。
パラメータの組み立て
$params = array();
$params{"Service"} = "AWSECommerceService";
$params{"AWSAccessKeyId"} = "アクセスキーID";
$params{"Operation"} = "ItemSearch";
// 当ページの下のほう参照
$params{"SearchIndex"} = "Books";
$params{"Keywords"} = "Java";
$params{"Version"} = "2009-07-01";
$params{"Timestamp"} = gmdate("Y-m-d\TH:i:s\Z"); // タイムスタンプ
// キーソート。重要!
ksort($params);
// urlパラメータ形式の作成
$paramString = "";
foreach ($params as $key=>$value) {
$paramString .= "&".urlencode($key)."=".urlencode($value);
}
$paramString = substr($paramString, 1);
続いて、署名を作成してURLにくっつける
$baseString = "GET\n{$parseUrl['host']}\n{$parseUrl['path']}\n{$paramString}";
$signature = base64_encode(hash_hmac("sha256", $baseString, "秘密キー", true));
$url = $awsUrl . "?" .$paramString . "&Signature=" . urlencode($signature);
作成したURLにアクセス
foreach($xml->Items->Item as $node){
print_r($node);
}
SearchIndex
-Apparel
-Automotive
-Books
-DVD
-Electronics
-GourmetFood
-Kitchen
-Music
-PCHardware
-PetSupplies
-Software
-SoftwareVideoGames
-SportingGoods
-Tools
-Toys
-VHS
-VideoGames

