- Home ›
- Amazon Web サービス入門 ›
- JavaScriptを使った署名認証 ›
- HERE
署名対象のリクエスト文字列
広告
前ページでパラメータとエンコードされた値がつながった文字列を並び替えを行いました。その文字列を1つの文字列に連結します。文字列と文字列のつなぎには「&」を使います。
var para = { "Service":"AWSECommerceService", "AWSAccessKeyId":"00000000000000000000", "Operation":"ItemLookup", "ItemId":"0679722769", "ResponseGroup":"ItemAttributes,Offers,Images,Reviews", "Version":"2009-01-06", "Timestamp":"2009-01-01T12:00:00Z" }; var para_array = []; for(var pname in para){ para_array.push(pname + "=" + encodeURIComponent(para[pname])); } para_array.sort(); var str_para = para_array.join('&');
文字列の連結にはjoinメソッドを使いました。
次に「GET」「webservices.amazon.com」「/onca/xml」そして先ほど作成した文字列を連結します。今度のつなぎには改行(¥n)を記述します。
var para = { "Service":"AWSECommerceService", "AWSAccessKeyId":"00000000000000000000", "Operation":"ItemLookup", "ItemId":"0679722769", "ResponseGroup":"ItemAttributes,Offers,Images,Reviews", "Version":"2009-01-06", "Timestamp":"2009-01-01T12:00:00Z" }; var para_array = []; for(var pname in para){ para_array.push(pname + "=" + encodeURIComponent(para[pname])); } para_array.sort(); var str_para = para_array.join('&'); var str_signature = "GET" + "¥n" + "webservices.amazon.com" + "¥n" + "/onca/xml" + "¥n" + str_para;
これで署名を作成する元になる文字列が作成できました。
サンプル
では簡単なサンプルで試してみます。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>署名認証テスト</title> <script type="text/javascript" src="./js/script4_1.js"></script> </head> <body> <p> ボタンを押して下さい </p> <p> <input type="button" name="checkbutton" value="check" onclick="getSignature()" /> </p> <div id="output" style="width: 500px; height: 100px"></div> </body> </html>
function getSignature(){ var para = { "Service":"AWSECommerceService", "AWSAccessKeyId":"00000000000000000000", "Operation":"ItemLookup", "ItemId":"0679722769", "ResponseGroup":"ItemAttributes,Offers,Images,Reviews", "Version":"2009-01-06", "Timestamp":"2009-01-01T12:00:00Z" }; var para_array = []; for(var pname in para){ para_array.push(pname + "=" + encodeURIComponent(para[pname])); } para_array.sort(); var str_para = para_array.join('&'); var str_signature = "GET" + "¥n" + "webservices.amazon.com" + "¥n" + "/onca/xml" + "¥n" + str_para; alert(str_signature); }
上記を実際にブラウザ見てみると次のように表示されます。
ボタンを押すと次のように表示されます。
( Written by Tatsuo Ikura )