Amazon Production Advertising APIとCocoa 第1回

2009年8月4日火曜日
5月ごろだったでしょうか、AmazonのWebservicesからメールが届きました。8月からAPIには認証を含める必要があるから準備せよと。その時はまだ先だし、春の忙しい時期だったので、放置していたのですが、Amazonは本気だったのです。
しばらくして「あなたのリクエストには認証が含まれてない」旨のリマインドメールが日本語で2度、英語で1度ほど届き、ようやく数日前に重い腰を上げたのでした。

ちなみに私がAmazon APIを使っているのは、近日発売予定の本のISBNをリスト化しておいて、Amazonに在庫が出てくるのを定期的にチェックするためのソフトウェアです。
言語はRubyCocoa。ただ、今回ようやくHillegass著"Cocoa programming for Mac OS X 3rd ed."を読み終わり、Objective-Cでも書けそうと思えたので、無謀にもObjective-Cを使ってCocoa(XCode 3.1)で作成しています。

なんとかXMLを取得するところまで行けたので、自分の覚え書きの意味合いも込めて、書いておきたいと思います。ちなみに配布する予定がないソフトウェアなので、互換性とか全く考えていません。かつ、Objective-Cは初心者です。ご注意を。

やることの流れは、このページ(Ajax Tower)が最もまとまっていて、わかりやすかったです。

※最初にすること
アクセスキーの他に、署名を作成するための秘密キー(Secret Access Key)が必要です。ここを見て確認してください。


1. 今まで通り、RESTのリクエストを作成してみます。例えば、ISBN9784844323457の本を検索するのであれば、
http://ecs.amazonaws.jp/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=[アクセスキー]&Operation=ItemLookup&ItemId=9784844323457&IdType=ISBN&SearchIndex=Books&ResponseGroup=Medium&Version=2009-03-31

FirefoxなどでそのURLを叩いてみると、XMLが返戻されてくると思います。文字列で検索をしたいとか、他のResponseGroupが欲しいとか、細かいことはAmazonのドキュメントを見て下さい。

2. 1.にTimeStampを加える
さらに、タイムスタンプを加える必要があります。しかも日本時間ではなく、GMTの時間が必要です。以下のように作ってみました。標準形式だそうなので、もっと簡単にできるのかと思ってドキュメントを散々探しましたが、これで力尽きました。まあ出来たからいいか。



NSTimeZone *zone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
NSCalendarDate *timeStamp = [NSCalendarDate calendarDate];
[timeStamp setTimeZone:zone];
NSString *time = [timeStamp descriptionWithCalendarFormat:@"%Y-%m-%dT%H:%M:%S.000Z"];



とりあえず署名を作るのに必要な項目が揃いました。

次回は、項目名と項目内容を対にした配列を作成と、URLエンコードです。



0 コメント:

コメントを投稿