Amazon

2010年8月12日木曜日

モバゲーのOAuth

こんなタイトルをつけると、迷える子羊たちが着そうですが…。

最近だと、Twitter APIがBasic認証をやめて、OAuth認証になる(なった?)んだけど、OAuthが標準となりつつありますね。
mixiアプリモバイルで、OAuthを使っていたので、モバゲーも一緒だろうと、mixiアプリモバイルのソースを使ってみたら、これが動かない。
同じOpensocial準拠なのに、なぜかと思い、モバゲーに聞いてみたら、「それは、アクセストークンを入れないと、モバゲーではダメ」とのこと。
mixiは純粋な 2-legged OAuthなのだけど、モバゲーでは、tokenをちゃんと指定してやらないとダメとのこと。
そもそも、この面倒なOAuth、mixiアプリモバイルで、動くプログラムが書けたのは、mixiが提供しているサンプルコードのおかげなのだけど、モバゲーはサンプルコードの提供なし。
とりあえず検索してみるも、機密保持からなのか、ヒットせず。
アクセストークンの生成には、oauth_tokenとoauth_token_secretの取得が必要なのだけど、この取得方法がわからん。
言語は、Pythonを使っていたのだけど、PHPで、oauth_signatueの検証を行うプログラムが、モバゲーにあったので、PHPで試す。
すると、oauth_tokenとoauth_token_secretを取得できた。
PHPのOAuth.phpの中身を見ると、特に取得しているような感じではないので、わかりずらいことで有名なモバゲーのドキュメントを読む。
おっと、Gadgetサーバーから送られるということに気がつく。
ということは、送られているのかと思い、Authorizationの中身を調べたら、入ってました!
このoauth_tokenとoauth_token_secretの取得がPythonでもできたので、access tokenを生成。
あとは、oauth.OAuthConsumerで、consumerを生成して、xoauth_requestor_idに、opensocial_viewer_idを入れて、リクエストをかけたら、無事成功。

ドキュメントには、あれやこれやと書いてあるため、面倒なのですが、実際のところ、OAuth.pyがやってくれるので、あまり考える必要なし。
あとは、この手順を間違えなければ、行けます。