FC2ブログ

スポンサーサイト

このエントリーのカテゴリ : スポンサー広告

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

GoogleAppEngineでTwitterAPI(3)Twitter4JでOAuth認証を使う

このエントリーのカテゴリ : GoogleAppEngine

さて、Twitter4JでJSP化したものの、このままでは私のアカウントを使うことになるので、OAuthなるものを利用します。

Twitter4JOAuthのブラウザ版での情報が少ないため、oauth_tokenや
oauth_verifierに悩まされましたが、結構苦労してなんとかできました。

http://monitorequest.appspot.com/twitguestbook

1. http://twitter.com/oauth_clients/newでアプリケーションを登録
 ConsumerKeyとConsumerSecretKeyを使うのでメモしておきます。

2. OAuth認証用のTwitterオブジェクトを生成
 TwitterFactoryでConsumerKeyとConsumerSecretKeyを指定して作成します。

  TwitterFactory factory = new TwitterFactory();
  Twitter twitter = factory.getOAuthAuthorizedInstance(KEY,SECRET_KEY);

3. Twitter.getRequestTokenメソッドでRequestTokenを生成
 ここで、

  requestToken = twitter.getOAuthRequestToken();

 とするとドツボにはまります。

  requestToken = twitter.getOAuthRequestToken("http://monitorequest.appspot.com/twitguestbook");

 としないとoauth_verifierが取得できず、延々と悩まされます。

4. RequestToken.getAuthorizationURLで取得したURLにリダイレクト
 こんな感じです。

  String url = requestToken.getAuthenticationURL();
  resp.sendRedirect(url);

5. リダイレクト後にtwitterオブジェクトにAccessTokenを持たせる
 認証された後にリダイレクトされたときにoauth_verifier
 クエリパラメータで渡されるので、これを取得し、

  twitter.getOAuthAccessToken(requestToken,oauth_verifier);

 としてtwitterオブジェクトを承認させます。
 このときに使用するrequestTokenは
 3.や4.で利用したrequestTokenを利用する必要があるため、
 3.でセッションに保持し、5.でセッションから取得して利用します。

 3.でoauth_tokenとoauth_secretをtwitterサイトから取得しており、
 それを元に4.で認証をしてoauth_verifierが発行されるようなので、
 考えてみれば当たり前ですが。

6. twitterオブジェクトを使ってtimelineなどを取得
 この辺りは前の記事の
GoogleAppEngineでTwitterAPI(1)Twitter4Jを使う
 GoogleAppEngineでTwitterAPI(2)EclipsePluginでJSPと同じです。

やっとできたのがこちらです。
http://monitorequest.appspot.com/twitguestbook

最大の敗因は5.でoauth_verifierがクエリパラメータで渡ってこなかったことです。
GoogleでTwitter4JのOAuth認証のサンプルを探してもクライアントアプリ版のサンプルでPINコードがどうのこうの、とか、リダイレクトがなかったりしました。
また、ブラウザ版のサンプルがあってもTwitter4Jが古いバージョンで参考にならなかったりして苦労しました。

結局3.にあるように、「絶対パスでリダイレクト先を設定する」でなんとかしのいだのですが、1.のTwitterのアプリ申請でもCALLBACK_URLをわざわざ指定しているにも関わらず、また絶対パスを指定しなければならないのが気持悪いです。
相対パスにするとtwitterサイトの相対パスに遷移するのでこれまた微妙です。

ちなみにAccessTokenとかはデータベースに保持していないので安心してください。
(ユニクロみたいに悪用目的ではないので…)
そもそもOAuth認証は仮にAccessTokenをサイトに預けても拒否すれば無効になるみたいです。

そっけない画面ですが、そのうち頑張って装飾して行こうかと思っています。
誰がデザインがんばりたい人いないかなぁ。

続きを読む

スポンサーサイト

テーマ : お仕事記録
ジャンル : 就職・お仕事

プロフィール

toronic

Author:toronic
IT関係で10年働いたのでそろそろ独立したいと考えているけどなかなか一歩が踏み出しきれないありきたりなプログラマ

カテゴリ
ブックマーク
最新記事
月別アーカイブ
検索フォーム
最新コメント
ブロとも申請フォーム

この人とブロともになる

メールフォーム

名前:
メール:
件名:
本文:

スポンサーリンク
リンク
一攫千金?
RSSリンクの表示
QRコード
QRコード
    助成金
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。