Amazon Product Advertising APIの導入準備

product advertising api

PHPもしばらく触っていないとまったく初心者に逆戻り。なので再びの勉強ということでAmazonの「Product Advertising API」を使った商品検索をPHPで作ってみることにします。

Access Key IDとSecret Access Keyの確認

以前にもこのWebサービスを使ったことがあるのでAccess Keyはすでに取得済み。なのでSecret Access Keyの確認をします。

まずはhttp://aws.amazon.com/にアクセス。ログインします。

ここもよくデザインが変わるので確認ページを探すのも少し手惑います。現時点では右上の「Account」から。

ページの真ん中あたりにAccess Key IDとSecret Access Keyが書いてあるはず。

サンプルソースでアクセスする

APIへアクセスするためのコードは以下のサイトで紹介されているものを転載させてもらいます。

Amazon Product Advertising API への対応(PHP版) – もやし日記

<?php

// Access Key ID と Secret Access Key は必須です
$access_key_id = 'Access Key IDを入力';
$secret_access_key = 'Secret Access Keyを入力';

// RFC3986 形式で URL エンコードする関数
function urlencode_rfc3986($str)
{
  return str_replace('%7E', '~', rawurlencode($str));
}

// 基本的なリクエストを作成します
// - この部分は今まで通り
$baseurl = 'http://ecs.amazonaws.jp/onca/xml';
$params = array();
$params['Service']        = 'AWSECommerceService';
$params['AWSAccessKeyId'] = $access_key_id;
$params['Version']        = '2009-11-01';
$params['Operation']      = 'ItemSearch'; // ← ItemSearch オペレーションの例
$params['SearchIndex']    = 'Books';
$params['Keywords']       = 'photoshop';// ← 文字コードは UTF-8

// Timestamp パラメータを追加します
// - 時間の表記は ISO8601 形式、タイムゾーンは UTC(GMT)
$params['Timestamp'] = gmdate('Y-m-d\TH:i:s\Z');

// パラメータの順序を昇順に並び替えます
ksort($params);// canonical string を作成します
$canonical_string = '';
foreach ($params as $k => $v) {
$canonical_string .= '&'.urlencode_rfc3986($k).'='.urlencode_rfc3986($v);
}
$canonical_string = substr($canonical_string, 1);

// 署名を作成します
// - 規定の文字列フォーマットを作成
// - HMAC-SHA256 を計算
// - BASE64 エンコード
$parsed_url = parse_url($baseurl);
$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 を作成します
// - リクエストの末尾に署名を追加
$url = $baseurl.'?'.$canonical_string.'&Signature='.urlencode_rfc3986($signature);//echo $url; // ← この URL にアクセスすれば、API リクエストができます

//返り値をXMLで出力する
header("Content-type: text/xml; charset=utf-8");
echo file_get_contents($url);

?>

最後だけちょこっと変更して取得したXMLをそのまま表示するようにしてます。

署名の作成方法」というページがAmazonアソシエイトのヘルプにあるので処理の流れについてはそちらも参考にしてみてください。

署名認証の仕組みはよく理解できませんが流れとしては理解できます。

今回はここまで。

次回はXMLをHTMLに整形して表示する部分をやってみます。

そうのひとりごと

© 2017 PAOLOG