2011年11月29日火曜日

GoogleのOAuthAPIを使う。(Chrome-Extension編)

今日は、新しいChrome-Extensionの開発をしていました。

今回のアプリケーションはGoogleのサービスを利用したかったので、
GDataAPIのドキュメントを見てみると、JavaScript版はすでに非推奨になっており、
最新のv3ではJavaScriptのAPIが存在しないようなので、v2で実装してやろうと
思ったのですが、Chrome-Extensionからだとうまくいかず。

どううまくいかないかというと、
var token = google.accounts.user.login(scope);
を実行すると、ログインした状態でもtokenがnullを返してくる。
(ローカル実行だからなのかもしれない。サイト上におけば結果が変わると思います)

という事で、仕方が無いので別の方法を探そうと思ったらいいライブラリがありました。
http://code.google.com/chrome/extensions/tut_oauth.html

これを利用するとChrome-ExtensionでもOAuth認証を行うことができると
言うことだったのですが、これを利用して、今日1日終わってしまいました。

BackgroundPageからoauth.authorize(onAuthorized);を呼び出すと、
新しいtabが表示されて、Googleのアプリケーション認証画面が表示されます。
が、今度はライブラリ側で実行されている、ChromeExOAuth.initCallbackPage();
(※chrome_ex_oauth.htmlファイル内で呼び出されている)
を実行すると、XMLHttpRequestのstatusが0になり、エラー扱いに
なってしまうようです。

ちなみに、上記のライブラリを利用するためには、ConsumerKeyとConsumerSecretが
必要なのですが、https://accounts.google.com/ManageDomainsのサイトで、
ドメインでの認証キーを取得すれば、利用することができるようになります。
(Chrome-Extensionでドメインの認証キーを利用するのがいいかどうかは不明です)
ちなみに、Google App Engineの[appID].appspot.comでも認証キーを取得する
事が可能なようなので、静的な認証用のファイルをアップロードしておいて、
Google App Engineではそれを利用すると良いと思います。