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

19年3月26日(Tue) 8時23分
TOP » UsersWiki » nao-pon » blog » 2009-05-09

RSS of nao-pon/blog
2009 5月 9 (土)
 

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() も使えない環境への対応は、代用関数が見つからないので、私の力量では無理です。 :-(



コメント一覧

投稿ツリー


ゲスト   投稿日時 2009-5-13 14:19

pukiwiimodのawsプラグインの「Product Advertising API」対応ってしていただけるのでしょうか?

nao-pon  投稿日時 2009-5-16 0:06
引用:

pukiwikimodのawsプラグインの「Product Advertising API」対応ってしていただけるのでしょうか?

最近のバージョンでしたら、HypCommonFunc の HypSimpleAmazon クラスを使用しているので、HypCommonFunc の次回のバージョンアップで対応できる予定です。 :-)

ゲスト   投稿日時 2009-5-19 10:15

ご回答ありがとうございました。
今後ともよろしくお願いいたします。



新しくコメントをつける

題名
ゲスト名
投稿本文

より詳細なコメント入力フォームへ

トップ   凍結 差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
Counter: 11972, today: 3, yesterday: 4
初版日時: 2009-05-09 (土) 00:17:10
最終更新: 2009-09-19 (土) 07:56:11 (JST) (3475d) by nao-pon
このページのTopへ
ログイン
ユーザ名:

パスワード:

オートログイン

Basic 認証

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



メインメニュー
UsersWiki メニュー
付箋メニュー
付箋メニュー 
付箋の編集
文字色: 背景色:
お名前:  線接続id:
 
ブックマーク
オンサイトブックマークは
ログインするとご利用になれます
[ログインする]
サイト内 Wiki
☆ 検索 ☆



高度な検索(サイト内)
FireFox検索プラグイン
オンライン状況
合計 45 人がオンライン中 :-)
(UsersWiki : 4 人)

登録ユーザ: 0 & ゲスト: 45

もっと...
サイト情報
管理人

nao-pon
 

登録ユーザ数: 4600


Web Services by Yahoo! JAPAN
楽天ウェブサービスセンター
Amazon.co.jpアソシエイト
現在ページのQRコード
現在ページのQRコード
[携帯対応]
参照元情報