WidgetのAmazon署名対応完了!!

ようやく自分が使っていた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をまだ開けていないので開けよう。