top


総投稿数 本 
no_

スポンサーサイト

 --------
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
カテゴリ :スポンサー広告 トラックバック(-) コメント(-)
no_1022

Amazon Product Advertising API:おぉ、対応忘れていた。AmazonのAPI利用方法、変わったことへの対応、催促メールが来ていた ・・・ 【Amazon】

 2009-07-11
 Amazon のAPIが名称が変わり、利用方法も変わりましたね。
 (2009/05/20:Amazonブログ

Product Advertising API の署名認証について
Product Advertising API の署名認証について※引用転載
 Product Advertising API では、
 ・サービス名称の変更、サービスの使用
  についての条件の
  Product Advertising API ライセンス契約
   への移行および、
 ・全てのリクエストへ署名認証を含めていただく



 ・・・・やんなきゃ。
  (期限:2009年8月15日まで だ)

 セキュリティ的なことや、
 Amazonの管理上の理由などあるのでしょうが、
 正直、「やれやれ」です。


 でも、無償で利用させていただいているんだもんな。


 仕事上のプロジェクトや管理している顧客サイトは
 もちろんすぐに対応しますが、
 この「創るMetaboy」や、開発用サイト「創ったmetaboy
 でも、いろいろ利用しているので、
 対応しなくっちゃ。
 ※記事毎に、取得貼り付けている「Amazon純正のウィジット
  はそのままでいいんだろうな・・・


  追記に ▼


FC2ブログランキング にほんブログ村 IT技術ブログ Webサイト構築へ ブログ王ランキング 人気ブログランキング 人気ホームページランキングへ


more

************************************************
◎ Amazon Product Advertising API への対応
************************************************


 ※利用方法ごとに
  対応する方法は違うようだが・・・
■対応ポイント
 □今までは、「Access Key ID」だけでよかったのが
  ・Secret Access Key を使った署名認証が
   必ず必要になる
 □timestampを利用したパラメータの追加

 基本的な概念・詳細は、一度
 こちらを見ておく必要があるだろう・・・

Product Advertising API 開発者向けガイド リクエストの署名認証について(参考訳)
Product Advertising API 開発者向けガイド リクエストの署名認証について(参考訳) Product Advertising API Developer Guide 内、
 ・Request Authentication項目の参考訳



 ・・・・さて、と。

 ■Secret Access Key の確認
  前に確認して記録してはいるのだが、再確認。


  □Amazon Web Service
   [Your account] > [Access Identifiers」
   こちらで、
   ・Secret Access Key(Your Secret Access Key:)を
    show すると、表示される。


 ■Services_Amazon 利用の場合(php)


  幸いメインで利用しているものは
  PEARの「Services_Amazon」利用しているもので
  これは、対応容易なようだ。

  □PEARのAmazonライブラリ アップグレード
   該当サーバーに、ssh もしくは telnet で入り


   □Services_Amazon をアップグレードする。


> pear upgrade Services_Amazon-beta

    ▼
Did not download optional dependencies: pear/Cache, use --alldeps to download automatically
downloading Services_Amazon-0.8.0.tgz ...
Starting to download Services_Amazon-0.8.0.tgz (20,992 bytes)
........done: 20,992 bytes
upgrade ok: channel://pear.php.net/Services_Amazon-0.8.0

    アップグレード 終えたようだ。
> pear list
Installed packages, channel pear.php.net:
=========================================
 ・・・・・
Services_Amazon 0.8.0 beta
 ・・・・・

  □ソースの変更
   ※require するファイルが変更され、
    ・呼び出す部分が変更
    ・「Secret Access Key」を加えるだけだ。


   ・今までのソース
	define('ACCESS_KEY_ID', '********************');
define('ASSOC_ID', '********************');
require_once '******/Services/AmazonECS4.php';
$service = new Services_AmazonECS4(ACCESS_KEY_ID, ASSOC_ID);

    ▼
   ・こうする
	define('ACCESS_KEY_ID', '********************');
define('SECRET_KEY_ID', '********************');
define('ASSOC_ID', '********************');
require_once '******/Services/Amazon.php';
$service = new Services_Amazon(ACCESS_KEY_ID, SECRET_KEY_ID, ASSOC_ID);

    簡単だ。
    アクセスして問題なく帰ってくれば、(一応)大丈夫かな。

 ■PHPで、すべて書き込んでいる場合は
  こちらの頁が非常に参考になりました。


Amazon Product Advertising API への対応(PHP版)CommentsAdd Star
Amazon Product Advertising API への対応(PHP版)CommentsAdd Star 署名認証リクエストの作成方法(PHP5)
 として記載していただいています。



 ・・・・ありがとうございます。
  □ポイントは
   ・RFC3986 形式で URL エンコードする関数
function urlencode_rfc3986($str)
{
return str_replace('%7E', '~', rawurlencode($str));
}
   を用意しておき
   ・今までリクエストしていたパラメータに
    Timestamp パラメータを追加
$params['Timestamp'] = gmdate('Y-m-d\TH:i:s\Z');
   時間の表記は ISO8601 形式、タイムゾーンは UTC(GMT)
   ・用意した関数でエンコードする部分
$canonical_string = '';
foreach ($params as $k => $v) {
$canonical_string .= '&'.urlencode_rfc3986($k).'='.urlencode_rfc3986($v);
}
$canonical_string = substr($canonical_string, 1);
   canonical == 正規化されている(?)
   ・署名の作成部分
$parsed_url = parse_url($baseurl);
$string_to_sign = "GET\n{$parsed_url['host']}\n{$parsed_url['path']}\n{$canonical_string}";
$signature = base64_encode(hash_hmac('sha256', $string_to_sign, $secret_access_key, true));
   HMAC-SHA256 を計算/BASE64 エンコード
   ・URL生成部分
$url = $baseurl.'?'.$canonical_string.'&Signature='.urlencode_rfc3986($signature);
   末尾に署名が追加されてます

   ですね。非常に丁寧でわかり易い。
   ありがとうございました。


 ■その他 いろいろ調べていると


  ・AmazonAPIの仕様変更に影響受けない

Amazon が Product Advertising API に変わっても「Amazon Quick Affiliate (JP)」は死にましぇん
Amazon が Product Advertising API に変わっても「Amazon Quick Affiliate (JP)」は死にましぇん GreasemonkeyでAmazon画面のHTMLから値を集めてフォームを構築している



 ・・・・面白いなこれ。


  ・Perlで利用の場合の詳細・具体的なソース

AmazonアソシエイトWebサービス(Product Advertising API)認証処理例 Perlの場合
AmazonアソシエイトWebサービス(Product Advertising API)認証処理例 Perlの場合 丁寧に良心的に記載されていますね



 ・・・・参考にさせていただくときがあるかも。


  ・販売されているもので、対応済みをうたっている頁

Amazon Product Advertising APIの署名認証への対応
Amazon Product Advertising APIの署名認証への対応 こういう細やかな対応表明って大事なんでしょうね。



 ・・・・ここが出しているサービス、みんな興味あるな。


  ・今回の Amazonの行為を「よんで」いる頁

Amazon APIが電子署名必須の「Product Advertising API」に変更、その目的は?
Amazon APIが電子署名必須の「Product Advertising API」に変更、その目的は? とてもよく理解できた気がする。深い。




 ひとつの出来事で、いくつも学べる。

commentsコメント
comment_post












管理者にだけ表示を許可する
commentトラックバック
トラックバックURL:
http://metaboy.blog23.fc2.com/tb.php/1022-d9b6b571
ようこそ
Add to Google 創るmetaboy:RSSフィード
My Yahoo!に追加
最新記事のRSS | 問い合わせ

仕事検索、アルバイト検索、依頼仕事の検索ポータル - 仕事検索.COM - www.jobkensaku.com ツクルン

創るmetaboy - WEB創る、サイト創る、何創る - 創ったmetaboy

 

リンク集

 

最近の記事

 

ブロとも申請フォーム
Sponserd by

さくらのレンタルサーバ さくらのレンタルサーバ
大容量・高機能レンタルサーバー heteml 大容量・高機能レンタルサーバー heteml
XREA (ValueDomain)
お名前.com お名前.com
名づけてねっと名づけてねっと
ムームードメインムームードメイン

 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。