Amazon Product Advertising API RESTリクエストの署名認証
2009年07月21日
2009年8月15日までに、Amazon Product Advertising API(旧Amazon アソシエイト Web サービス)のRESTリクエストに署名認証を加えろと、じゃないと、もうリクエストを受け入れないよと。
Amazonから、ひたすらメールが届いてしたので、重い腰を上げてやっと対応しました。
以下、PHPでのRESTリクエスト用URLの生成サンプル。
$point='http://ecs.amazonaws.jp/onca/xml';
$point_parse=parse_url($point);
$param['Service']='AWSECommerceService';
$param['AWSAccessKeyId']='AWSAccessKeyId';
$param['AssociateTag']='AssociateTag';
$param['ContentType']=rawurlencode('text/xml');
$param['Version']='Version';
$param['Timestamp']=rawurlencode(gmdate('Y-m-d\TH:i:s\Z'));
以下、その他のリクエストパラメーター
・
・
・
$key=array_keys($param);
sort($key);
foreach($key as $key){
$q[]="{$key}={$param[$key]}";
}
$q=implode('&',$q);
$sign[]='GET';
$sign[]=$point_parse['host'];
$sign[]=$point_parse['path'];
$sign[]=$q;
$sign=implode("\n",$sign);
$sign=hash_hmac('sha256',$sign,'Secret Access Key',true);
$sign=base64_encode($sign);
$sign=rawurlencode($sign);
$url="{$point}?{$q}&Signature={$sign}";
return $url;
老舗のAmazonのAPIも、何回もverを変えて。
もう10年ぐらいたっちゃうんでしょうか。
で、いい加減膨大なリクエストを受け入れるのが面倒になっての今回のバージョンアップなんでしょうか。。。
しっかし、こういったバージョンアップが他のAPIで繰り広げられると。
その都度、直すのが大変そうなので、とりあえずこれで収まってほしいなと思います。

