と言ってもAWSすらほぼ初めて。
AWS も Objective-C も余裕な人は以下のサイトが大変よくできている内容かと思います。
しかしAWS強い。強敵。色々癖があるというかアカウント登録すら難関として立ちはだかる。
よくある私はロボットではありませんのための追加認証手順で画像に表示されたパスワードを入れるも、入力が間違っています、ってなんども怒られ挫折したりとか。
この人の記事と同じ現象。
https://teratail.com/questions/88779
結局その手順をすっ飛ばして事なきを得たけど解決策はそのうち調べておきたいなぁ、、気になる。
あとクレジットカードの登録が初回アカウント作成時じゃ無いとVISA、Master Card以外が選べないっぽい。JCBとか後付けしようとしても怒られる。
CurrencyもJPYにしたいけど変更できないっぽいし。比較的最近の記事だと日本円にもできるって書いてあるんだけど、設定画面から編集ができない。アカウント作成した入口のサイトの指定が間違えてたのかなぁ?
[2017-10-02: 追記]
あれ、もしかして aws.amazon.com で作った AccessKey と SecretKey ってこのクエリの場合用無し?><
結局アフェリエイト用?のアカウント作ったら、そっちはそっちで AccessKey と SecretKey が生成された・・・・。aws.amazon.com のは SDK 専用?
AWSアカウント作って、ダッシュボードからとりあえずAPIアクセスのためのアプリ用のアカウントを作成。
付与すればいいポリシーって何だろうと思いつつ、とりあえずAPI Gatewayでいいのかな、調べないと。
Amazon API Gateway とは?(公式)
Amazon API Gateway を使用する準備を整える (公式)
API Gateway へのアクセスを IAM アクセス権限で制御する (公式)
やばい。始めるまでが遠い・・・;
「API を呼び出すための API Gateway アクセス権限モデル」この辺よく読め系か。
と思ったら行き着く先はこっちっぽい?
ひとまず公開するわけじゃないから「AmazonAPIGatewayInvokeFullAccess」
あとで見直そう・・・。ノマド先輩曰く、公開するならアクセス制御しっかりしないとダメよ言われた。はい。
他サイトのサンプルを見つつ、以下URLを作ってとりあえずブラウザで投げて見るとSignatureがない、と。
http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService&Operation=ItemLookup&SubscriptionId=[AccessKey]&ItemId=9784088806372&IdType=ISBN&SearchIndex=Books&ResponseGroup=Images,ItemAttributes
<ItemLookupErrorResponse xmlns="http://ecs.amazonaws.com/doc/2005-10-05/"> <Error> <Code>MissingParameter</Code> <Message>The request must contain the parameter Signature.</Message> </Error> <RequestID><!— 略 —></RequestID> </ItemLookupErrorResponse>
まあ、当然っちゃ当然か。Timestamp をつけて HMAC-SHA256 でハッシュ値を取得したものを Signature として指定する必要があるっぽい。
しかし Amazon 強い・・・色々ややこしい。公式ドキュメントも隅から隅まで読まないと間違った値を指定してまう気がする。
「Product Advertising API 開発者ガイド」でググると出てくるドキュメントバージョンは 2010-09-01 らしい。
https://images-na.ssl-images-amazon.com/images/G/09/associates/paapi/dg/index.html
が、これは古いらしい。日本語なので全体を認識するにはいいけど。
ひとまずたどり着いたのは 2013-08-01 のバージョン。英語。最新かどうかは不明。
http://docs.aws.amazon.com/AWSECommerceService/latest/DG/CHAP_ApiReference.html
2010年版だと AssociateTag が必須ではなかったのに 2013年版だと必須になってるのね・・・。
これに AWSAccessKeyId をくっつける。
書籍を検索する場合、いくつかのパラメータを指定することになるけれど組み合わせがRegion毎に違うらしい。ひとまず日本限定。
書籍の場合は以下をまず指定(正しいパラメータの順番があるかもしれない)してURLの後ろにパラメータとしてくっつけて準備。準備の後は Timestamp の指定と Query に対する Signature (HMAC-SHA256) が必要。先は長い・・・
後述の検索で共通
SearchIndex=Books
ISBNで検索する場合
&Operation=ItemLookup&IdType=ISBN&ItemId=%@
http://docs.aws.amazon.com/ja_jp/AWSECommerceService/latest/DG/EX_LookupbyISBN.html
タイトルで検索する場合
&Operation=ItemSearch&Title=%@
http://docs.aws.amazon.com/ja_jp/AWSECommerceService/latest/DG/EX_SearchingbyTitle.html
著者で検索する場合
&Operation=ItemSearch&Author=%@
http://docs.aws.amazon.com/ja_jp/AWSECommerceService/latest/DG/EX_SearchingbyAuthor.html
SearchIndex が Books で Operation に ItemSearch を指定した場合に使える追加のパラメータは以下の模様。実際には試していないので、用途は想像ベース。
パラメータ | 検索項目 |
---|---|
Author | 著者 |
BrowseNode | |
Condition | おそらく商品の状態。Newとか |
ItemPage | |
Keywords | |
MaximumPrice | |
MerchantId | |
MinimumPrice | |
Power | |
Publisher | 出版社 |
Sort | |
Title | 書籍のタイトル |
色々中途半端だけどとりあえず寝よう・・・(=_= Zzz