hypweb.net
XOOPSマニア  最新情報のRSS(サイト全体)
[ 自宅サーバーWebRing |ID=54 前後5表示乱移動サイト一覧 ]

TOP » UsersWiki » nao-pon » blog » 2009-05-09

RSS of nao-pon/blog
Sat 9 May 2009
 

Product Advertising API って一体・・・ anchor.png

Amazon の Associates Web Service が Product Advertising API に名称変更になったとのこと。

名称変更だけならいいのだけど、今後のリクエストには認証が必要になり、プログラム変更を 8月15日 までに済ませなければ、いけないらしい。

これが、どのようにするのかよく分からない。

Amazon.com のアカウントは持っていたので、とりあえず秘密キーは作成した。

この先は、

を見れば分かるらしいのだが、なんせ英語が分かんない。 :cry:

今日は、ここまで。


と思ったけど気になったので、ちょっと頑張ってみました。

とりあえず、PHP の hash_hmac() が使える環境 (PHP 5 >= 5.1.2, PECL hash >= 1.1) であれば、動作するようになりました。

肝は base64 でエンコードするところでしょうか。

$hash = base64_encode(hash_hmac('sha256' , $data, $key, TRUE));

あとは、hash_hmac() が使えない環境向けに代用関数を探すだけ。(これが大変かも :thinking: )
誰か知っていたら教えてください。 :shy:

Page Top

PHP での REST のまとめ anchor.png

検索で、訪れてくれる人が多いようなので、簡単にまとめておきます。

  1. 何はともあれ、amazon.com のアカウントを取って、AWS から秘密キーを作成する。
  2. GETクエリの構築
    • 配列 $params にクエリキーをキーとして値が入っているとする
    • クエリに Timestamp を加える
      $params['Timestamp'] = gmdate('Y-m-d\TH:i:s\Z');
    • クエリのキーを元に昇順ソートし、値を URL エンコードしてGETクエリを作成
      ksort($params);
      $querys = array();
      foreach($params as $key=>$val) {
          $querys[] = $key . '=' . rawurlencode($val);
      }
      $query = join ('&', $querys);
    • そのクエリと秘密キー($key)を元に Signature を作成
      1
      2
      3
      4
      5
      6
      7
      8
      
      $data = 'GET' . "\n" . 'webservices.amazon.co.jp' . "\n" . '/onca/xml' . "\n" . $query;
      if (function_exists('hash_hmac') && function_exists('hash_algos') && (in_array('sha256', hash_algos()))) {
          $signature = base64_encode(hash_hmac('sha256' , $data, $key, TRUE));
      } else if (function_exists('mhash') && defined('MHASH_SHA256')) {
          $signature = base64_encode(mhash(MHASH_SHA256 , $data, $key));
      } else {
          $signature = '';
      }
    • Signature が作成できれば、クエリに追加
      if ($signature) $query .= '&' . $signature;
  3. あとは、できあがった GETクエリで今まで通りにリクエスト

ざっと、こんな感じです。 :ok:

hash_hmac() も mhash() も使えない環境への対応は、代用関数が見つからないので、私の力量では無理です。 :-(



Front page   Freeze Diff Backup Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 1, today: 1, yesterday: 0
Princeps date: 2009-05-09 (Sat) 00:17:10
Last-modified: 2009-09-19 (Sat) 07:56:11 (JST) (3944d) by nao-pon
このページのTopへ
メインメニュー
ログイン

ユーザー名:


パスワード:





パスワード紛失  |新規登録