Amazon APIを利用している方、新しい認証方法に対応してますか~?

2009年8月16日からAmazon APIの認証方法が変更されるにあたって、利用している方は対応が必要です。

かなりざっくり説明すると、

  • URLにtimestampを付与
  • URLパラメータをアルファベット順にソート
  • パラメータにAmazonから新しく付与されているキーを元にハッシュ化しURLエンコード
  • ハッシュ化されたキーをURLにくっつけて、APIにアクセス!

と言った具合。詳しくは

[を] アマゾンAPIを使うのに2009年8月15日から認証が必要になるらしい

こちらを参照。

さて本題、Zend_Service_Amazonを利用している場合はどうすればよいか。

実はとても簡単。Zend_Service_APIオブジェクトをnewするときの第3引数にAmazonから付与される、Secret Access Keyを指定するだけ!

まずは、Amazon Web Servicesでログインしてから、上部メニューの「Your Account」⇒「Access Identifiers」へ行き、Your Secret Access Key:と書かれている部分をコピーしておく。

このSecret Access Keyをnew Zend_Service_APIしているソースの第3引数に指定しよう。

PHP:
  1. $amazon = new Zend_Service_Amazon('Access Key', 'JP', 'Secret Access Key');
  2. $result = $amazon->ItemLookup($item_code, array(
  3.     'AssociateTag'  => 'associate_tag',
  4.     'ResponseGroup' => 'Large'
  5. ));

以上終了!Zend使っててよかった~

ちなみに2009年7月26日に更新されたようなので、zendのアップグレードをしていない方は、ソースを落とすなり、「pear upgrade zend/zend」しておきましょう。

ちなみにZend_Service_Amazonコンストラクターのphpdocはこんな感じ。

PHP:
  1. /**
  2. * Constructs a new Amazon Web Services Client
  3. *
  4. * @param  string $appId       Developer's Amazon appid
  5. * @param  string $countryCode Country code for Amazon service; may be US, UK, DE, JP, FR, CA
  6. * @throws Zend_Service_Exception
  7. * @return Zend_Service_Amazon
  8. */
  9.  public function __construct($appId, $countryCode = 'US', $secretKey = null){
  10. }

あれ第3引数のdocumentが書かれてない。。でもちゃんと実装はされていて動作もしたので念のため。

関連する記事

blogranking←ぽちっとな

<<
>>