Serviceを使ったデモアプリを作成していたのだが、今年はiPhoneで作ってみようと思い、記憶をたどってRESTを発行してみたところエラーになる。Serviceが名前も変わって複雑な手順で呼び出さないと使えない仕様になっていた。これはWeb開発者からするとおまえいまさら何をいってんだよという話題なんだろうけど、その手順の面倒さに結構驚いた。Objective-Cで作るとしたら、Representationsのページか、Switch!のページが良さそうだ。あとは、認証対応するステップに関してはAjaxtowerさんかAmazon本家のページか。なっていない従来のURLをSignedの文字列にするページも公開されていた。実際にここでSignedなURLを作成してみると、どんなステップでどんな文字列が生成されるのか分かって理解しやすい。渡すREST文字列の構成方法はここに書かれていた。Java、C#、Perl、PHPのサンプルコードも公開されていた。Objective-Cのコードはなかったが。APIを使うコードを書いてみる。流れとしては、下記の通り。文字列追加する(実際にはリージョンにより変える、そして改行が入る)SHA256のHMACを使って書名を作成する引っかかったところステップ2iPhoneではNSCalendarDateは使えないらしい。規定のフォーマットのタイムスタンプを取得する。[/c]ステップ4ステップ4.の文字列のEscapeでも、”(ダブルクオート)がエスケープできなくてしばしはまる。¥ではなく\でエスケープしないといけないらしい。表示だけの問題で、¥記号はちゃんとバックスラッシュになっていると思ったのだが、ちがうらしい。Switch!のページを参考にして、CCHmacを使う。関してはネットを検索して出てきたものを参考にさせてもらった。これで一応完成のはず。使ったアプリを改造していたところ、AmazonからSignatureDoesNotMatchが返ってくる。使ってようやく原因が分かった。アルファベット順でソートしていなかったためだった。このブログを書いているときは意識していたのだが、コード片をコピペして改造していたらそのことはすっかり忘れていた。いうことでこのエラーが出たらそういう可能性も疑ってみてくだされ。ItemSearchで10ページ制限?!などさっぱりフォローしていなかったが仕様変更が行われていた。必須になったということで試してみたがさっぱり動かないので調べていたところ下記を発見。パラメータ群の最初に持ってこないといけないとのこと。確かにそのようにしたところ動作した。Cocoaプログラミング(ヒレガス本)Cocoaプログラミング界では有名だと思われるヒレガス本を購入。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。