SQLの窓

2009年08月23日


Amazon署名認証をPerlでやる必要のある人向け簡単なサンプルと配置方法

Perl は環境に関しては特別詳しく無いので、その立場からすると
WEB の情報は Perl の実行環境等をある程度良く知る人向けしか
ありませんでしたので、簡単にまとめます。

まず、ほとんどの人が、既存のコードを少し改造して動かしたいはずなので、
できれば、関数やモジュールでは無くソースコードで解りやすいのがあると
助かります。

まず、ここでサンプルを見つけました。

で、作成したコードは以下のようになります。
	print "Content-Type: text/xml; Charset=utf-8\n";
	print "\n";

# パラメータを直に作成
	my %pkv;
	$pkv{'Service'} = 'AWSECommerceService';
	$pkv{'SubscriptionId'} = $SubscriptionId;
	$pkv{'Operation'} = 'ItemLookup';
	$pkv{'ResponseGroup'} = 'Large';
	$pkv{'ItemId'} = $_POST{'ISBN'};
	$pkv{"Timestamp"} = strftime("%Y-%m-%dT%H:%M:%SZ", gmtime);

# サンプルコードを元に、呼び出し文字列を構成
	my $pstr = join('&', map {"$_=".uri_escape($pkv{$_})} (sort keys %pkv));
	my $data = "GET\nwebservices.amazon.co.jp\n/onca/xml\n$pstr";
	my $key = "秘密のキー";
	my $signature = hmac_sha256_base64($data, $key);
	$signature .= '=' while length($signature) % 4;
	$signature = URI::Escape::uri_escape($signature);

	my $aurl = qq(http://webservices.amazon.co.jp/onca/xml?)
		.qq($pstr&Signature=$signature);

# 既存の呼び出しコードに渡す
	$request = HTTP::Request->new("GET", $aurl );
	$ua = LWP::UserAgent->new;
	$response = $ua->request($request);

	local($page) = $response->content;

	$page =~ s/$SubscriptionId/MySubscriptionId/g;

	print $page;

ここで問題は、モジュール関連ですが、Perl のモジュールなんざ良く解らないので、

1) hmac_sha256_base64 用のソースコードをダウンロード

2) 解凍して、Digest ディレクトリごとこの cgi と同じディレクトリにアップロード
( Java と同様で、名前空間と一致する必要があるようです )

3) ソースコードの先頭に以下のように書きます

use POSIX qw(strftime);
use lib qw(.); 
use Digest::SHA::PurePerl qw(hmac_sha256_base64);
use URI::Escape;
※ うちは、use strict とか書くとエラーになるのでありません。


関連する記事
【PHP用】Amazon アソシエイト Web サービスの名称変更および署名認証の期限が近づいて来たので


【APIの最新記事】
posted by lightbox at 2009-08-23 04:22 | API | このブログの読者になる | 更新情報をチェックする
バッチ処理

Microsoft Office
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
CSS ドロップシャドウの参考デモ
PHP正規表現チェッカー
Google Hosted Libraries
cdnjs
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり