BLOGTIMES
2011/06/25

Twitter4J で つぶやきを送信するアプリを書いてみた

  java  twitter  integration  programming 
このエントリーをはてなブックマークに追加

Twitter にポストするアプリが作れるかと聞かれたので、前々から興味があった Twitter 連携アプリを作り方を調べてみました。最近 Java ばかり使っているので、今回はTwitter4Jを利用することにします。

基本的な操作は「Twitter4J - コード例」を参考にすれば問題なさそうです。ごく簡単なアプリを書いてみましたが、Javaがある程度使いこなせれば簡単ですね。調子に乗ってウザイbotとか作ってみたくなりますが、これは自重しておきましょう。

以下、作業メモ。

アプリを登録する

最初に躓きそうなところとしてはOAuth 認可の部分でしょうか。これを使うには New Twitter Application | dev.twitter.com から自分のアプリケーションを登録して、Consumer keyとConsumer secretをあらかじめ取得しておく必要があります。

TwitterのTLを取得するサンプル

下記は一番簡単と思われるTLを取得するサンプル。ほとんどサンプルのパッチワークでできています。
twitter4j.propertiesの方のoauth.consumerKeyとoauth.consumerSecretは上記で登録したアプリのものに差し替えておきます。

HsurTestApp.java

import java.awt.Desktop; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URI; import java.net.URISyntaxException; import java.util.List; import java.util.Properties; import twitter4j.Status; import twitter4j.Twitter; import twitter4j.TwitterException; import twitter4j.TwitterFactory; import twitter4j.auth.AccessToken; import twitter4j.auth.RequestToken; public class HsurTestApp { /** * @param args * @throws TwitterException * @throws IOException * @throws FileNotFoundException * @throws URISyntaxException */ public static void main(String[] args) throws TwitterException, IOException { final String CONF_NAME = "twitter4j.properties"; Twitter twitter; Properties prop = new Properties(); try { prop.load(new InputStreamReader(new FileInputStream(CONF_NAME))); twitter = new TwitterFactory(".").getInstance(); } catch (FileNotFoundException e) { InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream(CONF_NAME); prop.load(is); twitter = new TwitterFactory().getInstance(); RequestToken requestToken = twitter.getOAuthRequestToken(); AccessToken accessToken = null; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while (null == accessToken) { try { Desktop.getDesktop().browse(new URI(requestToken.getAuthorizationURL()) ); } catch (URISyntaxException urise) { urise.printStackTrace(); System.err.println("Bad Authorization URL."); System.exit(1); } System.out.println(); System.out.print("Enter the PIN(if aviailable) or just hit enter.[PIN]:"); String pin = br.readLine(); try{ if(pin.length() > 0){ accessToken = twitter.getOAuthAccessToken(requestToken, pin); }else{ accessToken = twitter.getOAuthAccessToken(); } } catch (TwitterException te) { if(401 == te.getStatusCode()){ System.out.println("Unable to get the access token."); }else{ te.printStackTrace(); } } } prop.put("oauth.accessToken", accessToken.getToken()); prop.put("oauth.accessTokenSecret", accessToken.getTokenSecret()); prop.store(new FileWriter(CONF_NAME), "Autogenerated by HsurTestApp"); twitter = new TwitterFactory().getInstance(accessToken); } List<Status> statuses = twitter.getFriendsTimeline(); System.out.println("Showing friends timeline."); for (Status status : statuses) { System.out.println(status.getUser().getName() + ":" + status.getText()); } } }

twitter4j.properties

debug=false oauth.consumerKey=################# oauth.consumerSecret=########################################

実行例

上記をコンパイル後、実行可能なjarにまとめて起動させると下記のような感じになります。

java -jar hsurTestApp.jar Enter the PIN(if aviailable) or just hit enter.[PIN]:0254565 Showing friends timeline. (ここにTLが表示される)

ポイントはPINを入力する部分になります、この部分は初回起動時のみ表示されます。流れ的にはブラウザが自動的に起動して、許可を与えるかどうかについて同意すると、PINコード(数字の羅列)が表示されるので、これを画面から入力してやればOKです。2回目移行はカレントディレクトリにできている twitter4j.properties というキャッシュファイルを利用するようになっています。

Twitter アプリ許可画面 - Twitter4J で つぶやきを送信するアプリを書いてみた
Twitter PIN画面 - Twitter4J で つぶやきを送信するアプリを書いてみた

ここまでで作業時間は作業時間は1時間強といったところでした。


    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/4287
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン