Twitter4jでOAuthを試してみた


Google App EngineのJava環境にTwitter用ライブラリ「Twitter4j」とWebアプリフレームワーク「Wicket」を載せていろいろ遊んでいるのですが、Twitterのユーザー名とパスワードをそのままDBに保持するのは気分が悪いということで、最近推奨されている「OAuth」に挑戦してみました。

基本的に参考にしたのはこちら。

OAuth 始めましたOAuthUpdate.java

やる事自体はそんなに難しいことではなく、

1)http://twitter.com/oauth_clients/newでアプリケーションを登録
→表示されるConsumer keyとConsumer secretの文字列を控えておく

2)Twitterオブジェクトを生成し、setOAuthConsumerメソッドでConsumer keyとConsumer secretを設定

3)Twitter#getRequestTokenメソッドでRequestTokenを生成。

4)RequestToken#getAuthorizationURLメソッドで取得した認証ページのURLにリダイレクト

5)認証ページで認証を許可したあと、RequestToken#getAccessTokenメソッドでAccessTokenを取得。このAccessTokenを保持する。

6)次回以降Twitterオブジェクトを使うときはsetAccessTokenメソッドでAccessTokenを設定する。

ほぼOAuthUpdate.javaでやっていることそのままです。注意が必要なのは、4)~5)で認証ページへリダイレクトして戻ってくるまでの間、何らかの方法でRequestTokenオブジェクトを保持しておく必要があることです。RequestTokenはいわば使い捨てで、認証ページから戻ってきた後にもう一度getRequestTokenメソッドで生成してもAccessTokenは取得出来ません(冷静に考えれば当たり前ですね)。私は4)で認証ページに飛ぶ前に、WicketのSessionの仕組みを使ってRequestTokenを保存するようにしました。

自分のWebアプリとTwitterの認証ページが連携して動く様はなんとも言えず面白いですね。これでユーザー名とパスワードをGAEに預けずにTwitterを使うことが出来ます。

コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload CAPTCHA.