2010/05/12

amazon api を学んだ

 
amazon の API をどうしても使う必要があるので、調査してみた。
 
自宅サーバにて amazon API を叩けば「任意文字列検索 → 結果を出す」という
簡易的なWEBツールが出来るまで、時間にして丸々半日使った。
 
 
 
なんか…
 
色々めんどくさかった。
 
まずアカウント発行の段階に関してはAmazon web サービス入門というページが
非常に参考になりました。
 
 
参考サイトが無いと、アカウント発行の段階で何日費やすか想像が付きません。
 
そして一番ハマったのがシグネチャの発行
 
PHP5 で単純パターンで良いなら、以下のようにすれば出来るのですが、
 
// URL からパラメーターを抽出、生成した後のデータ
$data = 'GET
ecs.amazonaws.jp
/onca/xml
AWSAccessKeyId=00000000000000000000&Operation=ItemSearch&ResponseGroup=Request%2CImages&Service=AWSECommerceService&Timestamp=2010-05-12T12%3A00%3A00Z&Version=2009-07-01';
 
// 個人の秘密キー
$secret_key = 'あなたのシークレットキー';
 
// シグネチャを生成
$hash = hash_hmac('sha256', $data, $secret_key, true);
 
// シグネチャを base64 でエンコード後、url エンコード
$signature = rawurlencode( base64_encode($hash) );
 
// シグネチャを最後に連結すればOK
私は文字コード SJIS の Windows エディタでやっていたので、$data 変数の改行コードが
 \r\n となってしまい、シグネチャの値がおかしくなっていました。
 
仕様的に、改行コードは \n でなければいけないとか。
 
これは、微妙に気づきませんでした。
 
FTP のテキスト転送なら問題なかったと思いますが、自宅サーバーなので samba でそのまま
編集していただけに、より気づけなかった( ´д`)
 
けっこう疲れたなぁ。
 

0 件のコメント:

コメントを投稿