AS3+Amazon Web Services その3
火曜日, 24 11月 2009
なんとか完成しました。
結局「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();
に関しては、参考サイトの方で詳しく解説してくれているのでそちらで。
んー、また一つ成長できた^^
