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';
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 コメント:
コメントを投稿