ようやく自分が使っていたAmazon APIの署名対応をすべて完了。
Amazon APIは国によって別々のドメインで提供しているんですが、調子にのってWidgetの国際化対応でロケールにあわせて適切なドメインに投げてたから・・・
- (de) Erinnerung: Amazon.de Product Advertising API-Authentifizierung
- (co.jp) 【重要・あと30日です】Product Advertising API の署名認証利用開始のお願い
- (co.uk) Product Advertising API Reminder
- (com) Product Advertising API Reminder
もう、わかってるちゅーねん。って思わずツッこんでしまったくらいメールきた。(エセ関西人の性)。でもこうやって見るとフランス人には使われていないようだ。
正直のところ、Amazonにはあまり怒っていなくて、またもや怒りの矛先はxmlのencoding属性がないと日本語が文字化けするどう考えてもフォローできないYahoo Widgetのバグに向いてしまった。だからレスポンスのHTTP HeaderのContent-Typeみろって。
例のごとくAmazonにクエリストリングなしでパラメータをPOSTするとレスポンスのxmlタグにencoding=”UTF-8″が入って結果としてYahoo Widgetで日本語が化けないという技を利用。
Javascript内に秘密鍵を入れたくないのでGoogle App Engineで署名つけてリダイレクトしていたのだがPOSTのリダイレクトはしんどそうなのでApp EngineでPOSTを受け付けた場合は署名付きパラメータを文字列で返して再度Widget側でAmazonへリクエストをPOSTするようにした。
こんな面倒なことはおそらくYahoo WidgetだけなのでGETで受けたときはそのまま署名付きURLでリダイレクトする仕様。
しばらく続いていたサステイニング作業がようやく終わり。最近はブログもつぶやきもせず、ただ疲弊しただけだったがそろそろ新サービスを考えたい。Google Developer Phoneをまだ開けていないので開けよう。