日記/2009-6-21

最終更新時間:2009年06月21日 22時34分57秒

AmazonSearch プラグインのProduct Advertising API対応

 

 AmazonSearch プラグインなどのFreeStyleWiki用プラグインは、Amazonが提供している商品情報へのリンク作成用WebAPIを利用しています。
 ひと月ほど前のAmazonからのメールで、このAPIの仕様が変わって電子署名による認証が必要になるということを知りました。3か月の移行期間をおいた2009/08/15からは、認証されないリクエストは受け付けなくなるとのこと。
 8月まではまだ間があるのと、面倒くさいのとでほったらかしにしていた、このProduct Advertising APIの電子署名認証への対応ですが、やっとこさ重い腰を上げて取りかかることにしました。
 やってみるとこれが予想どおり結構面倒。
 以下に、インストールの手順を記しておきます。

Digest::SHAのインストール

 電子署名の生成のために、モジュールDigest::SHAが必要になるのですが、インストールにはコンパイルを伴います。これは「lib以下にソースをコピーするだけ」という方法ではインストールできないということ。
 実は、PurePerlのものもあるのですが、スピードのためと、今後、このサイトが運用されているさくらインターネットのレンタルサーバーには入っていない、いろんなモジュールをインストールしたくなったときのために、ちょうどいい機会なので、一般ユーザー環境へのCPANモジュールのインストールにチャレンジしてみました。
 と言っても、こちらのページに書かれているとおりの手順で環境を整えたら、おもむろにCPANシェルから、

cpan[1]> install Digest::SHA

とやればOK。
 もちろん、lib以下にPurePerl版をコピーしてインストールしてもOKのはずです(確かめてませんが)。

インストールしたモジュールのパスの追加

 上記でインストールしたモジュールがFreeStyleWikiのプラグインから使えるように、一般ユーザー環境でのCPANモジュールのパスを、FreeStyleWikiのwiki.cgiに追加します。
 wiki.cgiの22行目辺りの以下の行に、

use lib './lib';

 一般ユーザー環境でCPANモジュールをインストールしたパスを追加します。

use lib qw(./lib /home/xxxxxxxxx/local/lib/perl5/);

AmazonPAPI.pmのインストール

 以下のページから、AmazonPAPI.pmをダウンロードして、lib以下にインストールします。

lib以下のURIモジュールの更新

 上記でインストールしたAmazonPAPI.pmは、内部でURI::Escape::uri_escapeを呼んでいるのですが、どうやらFreeStyleWikiに標準で添付されているlib以下のURIモジュールのバージョンが古いらしく、うまく動いてくれません(エラーになって、AmazonSearch プラグインがインストールされていません、と表示される)。
 よって、このURIモジュールを新しいもので上書きします。
 以下のモジュールを、lib以下に上書きしてインストールすればOK。

 ちなみに、さくらインターネットの、私が使っているサーバーにインストールされているURIモジュールのバージョンは、2008/06/21現在「1.37」と、充分新しいものでしたので、わざわざ上書きインストールしなくても、lib以下からURI.pmとURIのディレクトリを削除しただけでエラーは出なくなりました。

Unicode::RecursiveDowngradeのインストール

 さらに以下のモジュールを、lib以下にインストールします。

AmazonSearch.pmの修正とインストール

 まず、こちらのページの手順を参考に、Amazon Product Advertising API のアカウントを作成します。
 次に、以下のファイルをダウンロードしたら、

 AmazonSearch.pmの

  • 98行目の変数「$AccessKeyId」に、取得した AccessKeyId
  • 99行目の変数「$SecretAccessKey」に、取得した SecretAccessKey
  • 100行目の変数「$AssociateTag」に、取得した AssociateTag

それぞれ設定します。
 なお、125行目のハッシュの値に、アフィリエイトIDを入れるといいはずですが、自分がもってないもんで、うまく動くかどうか確かめてません。
 その後、plugin以下に、ダウンロードしたファイル(修正したAmazonSearch.pmを含む)をディレクトリごとコピーして、インストールします。
 以上でインストール作業は完了です。
 
 使い方などは、従来のAmazonSearch プラグインのままです。
 

参照情報

追加

  • 2009/08/01に、Ykpamazon プラグインTdamazon プラグインのAmazon Product Advertising API対応のために、WebAPIとのやりとりの部分をモジュールとして利用できるよう修正しました。
  • 2011/07/27に、AssociateTag(アフィリエイトのトラッキングID)の必須パラメータ化に対応しました。