アマゾンAPIが2009年8月15日から認証必須になってたみたい。

【この記事の所要時間 : 約 7 分

amazon_web_services.gif
AmazonのWEBサービス(REST)を使って作っているサイトの挙動がおかしいなあ~と思って調べてみると、なんと「Product Advertising API の署名認証利用開始のお願い」という題名でAmazonからメールが来ていたのを見逃していたみたい。
そういえば、リクルート系のAPIを利用したサイトも認証キーを導入しているのを知らなくて、一時不具合がでたのを思い出した。
スマッチAPIが利用できなくなっていた!
結論としては、認証のための電子署名をリクエストに含める必要があるみたい。

Product Advertising API 開発者の皆様
いつも Product Advertising API をご利用いただき、誠にありがとうございます。
先日より数回にわたり、Product Advertising API への全てのリクエストに、認証のための電子署名を 2009年8月15日までに含めていただく必要があることにつき、ご案内させていただいております。多くの皆様に既にご対応を完了、または開始いただき、ご協力に深く感謝しております。
弊社による調査では、お客様の AWSAccessKeyID から送信されているリクエストの全部または一部に、未だ電子署名が含まれていないことが判明しています(2009年8月6日時点)。電子署名は今週末の2009年8月15日には必須となり、これ以降に認証を含まないリクエストが送信された場合、リクエストは一切処理されなくなりますので、至急ご対応を進めていただきますよう、重ねてお願い申し上げます。
お客様には大変お手数をおかけすることとなり恐縮ですが、ご利用中のリクエストが2009年8月16日以降も引き続き正しく動作するために、ご対応のほどよろしくお願いいたします。
既にご対応を完了くださっている場合は、本メールが行き違いとなりますことをご容赦ください。ご協力に深く感謝いたします。
ご参考まで、Product Advertising API へのリクエストに署名認証を含めるための方法に関する参考資料へのリンクをまとめましたので、ぜひご利用ください。
・開発者向けガイド(英語) [ http://docs.amazonwebservices.com/AWSECommerceService/latest/DG/ ]では、署名認証に関する詳細な情報がご確認いただけます。
・Developer Guide – リクエストの署名認証について(日本語参考訳) [ https://affiliate.amazon.co.jp/gp/associates/help/t126 ]では、上記ガイドの日本語版がご覧いただけます。なお、こちらはあくまでも参考訳としてのご提供となりますので、最終的なご確認は上記Developer Guide(原文)をご利用ください。
・Sample Code(英語) [ http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=14 ]では、署名認証のJ Java, C# ならびに Perl のサンプルコードがご覧いただけます。
・署名認証の導入にあたってのお問い合わせ・情報交換には、開発者フォーラム(英語) [ http://developer.amazonwebservices.com/connect/forum.jspa?forumID=9 ](本社技術スタッフが常駐しておりますので、より迅速な対応が得られます)開発者フォーラム(日本語) [ http://developer.amazonwebservices.com/connect/forum.jspa?forumID=19 ](日本語での投稿が可能ですが、本社技術スタッフによる対応については少々お時間を頂戴する場合がございます)をご利用ください。
・その他ご不明な点がありましたら、Product Advertising API [ https://affiliate.amazon.co.jp/gp/advertising/api/detail/main.html ] およびよくあるご質問 [ https://affiliate.amazon.co.jp/gp/advertising/api/detail/faq.html ]をご覧ください。
Amazon の商品を広告いただきありがとうございます。広告いただいた商品の販売収益を、皆様に紹介料として還元できることを楽しみにしています。
今後ともよろしくお願いいたします。
Product Advertising API チーム

調べてみると、Signature (署名)とTimestamp (タイムスタンプ)という2種類のパラメータがRESTの認証では必要とのこと。このSignature (署名)パラメータを作成するために、米国アマゾンのアカウントを作成して、AWS秘密キーをもらってこい!ということらしい。
Amazon アソシエイト(アフィリエイト) – ヘルプ – 認証パラメータ

Product Advertising APIでは、RESTリクエストの認証において、以下のパラメータが使用されます。
* Signature (署名) – このパラメータはオプションとなり、初期値は存在しません。Signatureパラメータはリクエストのタイプ、ドメイン、URLを使用して作成され、パラメータは、=& のフォーマットで記述されており、リクエスト内の各パラメータの文字列の順に並べられています(Signatureパラメータ本体以外)。正しい仕様になっていれば、AWS秘密キーを元にbase64エンコードのHMAC-SHA256署名が作成されます。このプロセスに関する詳細は、RESTリクエストのサンプルをご参照ください。
* Timestamp (タイムスタンプ) – このパラメータは、Signatureパラメータをリクエストに含める場合は必須となり、含めていない場合はオプションとなります。こちらについても初期値は存在しません。リクエストに含めるタイムスタンプは、dateTimeオブジェクトである必要があり、すなわち、date オブジェクトおよびtime オブジェクトの全ての情報がを含めたもの(年月日・時分秒)となります(こちらに関するより詳細な情報については、http://www.w3.org/TR/NOTE-datetimeをご参照ください)。この値はISO8601で定義された国際標準時(GMT)での表示形式となります: YYYY-MM-DDThh:mm:ssZ (T および Z はリテラル値)

検索すると、すでにPHPでサンプルコードを書いてくれているサイトもあって大変楽だ!
AmazonのAPIでHMACSHA256が必要になる件
AmazonのProduct Advertising APIを利用するにはHMAC-SHA256が必要らしい
アマゾンAPIを使うのに2009年8月15日から認証が必要になるらしい
PHP4 で HMAC-SHA256 などの hash_hmac() 関数を使えるようにする
今ソースをおいてあるサーバのPHPのバージョンがPHP 5.1.2 以上なので、hash_hmac() 関数が使える。よってこの手でいくことにする。

スポンサーリンク
レクタングル(大)広告
  • このエントリーをはてなブックマークに追加
スポンサーリンク
レクタングル(大)広告

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です