- 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 )
AjaxTower