Loading [MathJax]/extensions/tex2jax.js

2011-07-22

GAEでTwitter4Jを利用する 

JavaでTwitterクライアントを作るにはTwitter4Jを使えば簡単らしいが、GAE上で実装する場合はちょっとした工夫がいるようだ。

appengine-web.xmlの設定
設定のポイントは2つ。
  • sessionを使えるようにする
  • consumerKeyとconsumerSecretは、System-propertyとして記述
以上を実現するには以下のように記述するとよい。

<sessions-enabled>true</sessions-enabled>
<system-properties>
<property name="oauth.consumerKey" value="コンシューマーキー"/>
<property name="oauth.consumerSecret" value="コンシューマーシークレット"/>
</system-properties>
サーブレットでの記述方法
下記に2つ載せますが、1つ目が最初に呼ばれるサーブレットで、2つ目はコールバックされるサーブレットです。1つ目では、
  • twitterクラスのインスタンス
  • requestToken情報
をセッションで保存しておくというのがポイントです。これは、memcacheに入れてもいいのかな?とにかく、状態を残しておかないといけません。
コールバックされるサーブレットでは、リクエストパラメータから「oauth_verifier」を受け取っておいてください(自動的に付与されます)。それを用いてAccessTokenを入手することになります。
//最初に呼ばれるサーブレットでの記述
TwitterFactory factory = new TwitterFactory();
Twitter twitter = factory.getInstance();
request.getSession().setAttribute("twitter", twitter);
requestToken = twitter.getOAuthRequestToken("コールバックするURLを入れてください");
request.getSession().setAttribute("requestToken", requestToken);
String url = requestToken.getAuthenticationURL();
response.sendRedirect(url);
/* --------------------------------------------------*/
// コールバックされるサーブレットでの記述
Twitter twitter = (Twitter) request.getSession().getAttribute("twitter");
RequestToken requestToken = (RequestToken) request.getSession().getAttribute("requestToken");
String oauth_verifier = request.getParameter("oauth_verifier");
PrintWriter pw = response.getWriter();
pw.write("結果");
pw.write(oauth_verifier);
try {
twitter.getOAuthAccessToken(requestToken, oauth_verifier);
twitter.updateStatus("Twitter4Jからテスト投稿");
} catch (TwitterException e) {
e.printStackTrace();
}
参考URL
本サイトの内容は、下記のサイトを参考にさせていただきました。ありがとうございます。


0 件のコメント:

コメントを投稿