AS3+Amazon Web Services その3

RollingAWS

RollingAWS

なんとか完成しました。
結局「Keywords」のエラーは簡単なことでした。

APIに渡すときのパラメータは昇順であること。

…はい、よく覚えておきます。

んで、結局

・as3でAmazon Web Service APIを使ってみる
・AS3 in Amazon ☆ Product Advertising APIのHMAC-SHA256署名への対応

を参考にさせてもらってFlash Math & Physics Design:ActionScript 3.0による数学・物理学表現[入門編]のCase14の変更箇所はこちら。

//as3cryptoの必要なクラスをインポート
import com.hurlant.crypto.hash.HMAC;
import com.hurlant.crypto.hash.SHA256;
import com.hurlant.util.Base64;

//AmazonWebSearvices関係の設定
private var accessKeyId:String = "ユーザ固有のAccessKeyID";
private var secretAccessKey:String = "ユーザ固有のsecretAccessKey";
var requestUri:String = "webservices.amazon.co.jp";
var requestPath:String = "/onca/xml";

//タイムスタンプの設定
var timestamp:String = makeTimeStamp();
var keyword:String="actionscript";

// パラメータを昇順で並べながら連結
//URLエンコードが必要なものはescape関数でエンコード
var query:String = "AWSAccessKeyId=" + accessKeyId + "&"
+ "Keywords=" + escape(keyword) + "&"
+ "Operation=ItemSearch&"
+ "ResponseGroup=Medium&"
+ "SearchIndex=Books&"
+ "Service=AWSECommerceService&"
+ "Sort=salesrank&"
+ "Timestamp=" + escape(timestamp);

//署名の作成
var signatureText:String = ["GET", requestUri, requestPath, query].join("\n");
var signature:String = makeSignature(signatureText, secretAccessKey);

//署名をクエリの最後に追加
query += "&Signature=" + signature.replace(/\+/g, '%2B').replace('=', '%3D');

//リクエストURLの完成
var requestUrl:String = "http://" + requestUri + requestPath + "?" + query;

とりあえず、as3cryptってものが必要なのでこれにパスを通すこと。
あとは、ほとんど先駆者の方たちのスクリプトを流用させてもらいました。
上記のスクリプトは抜粋なので、使う場合はそれぞれ必要な個所へ挿入で。

関数の

makeTimeStamp();
to2size();
makeSignature();

に関しては、参考サイトの方で詳しく解説してくれているのでそちらで。

んー、また一つ成長できた^^

Leave a Reply

Get Adobe Flash playerPlugin by wpburn.com wordpress themes

Bad Behavior has blocked 22 access attempts in the last 7 days.