Movatterモバイル変換


[0]ホーム

URL:


BLOGTIMES

cles::blog

平常心是道
« :: »
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=falseoauth.consumerKey=#################oauth.consumerSecret=########################################

実行例

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

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

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

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

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


    byhsur at 20:20[5年前][3年前][2年前][1年前][1年後][2年後][3年後][4年後][5年後] |
    こんな記事もあります 「OAuth java twitter4j
    2023 年の人気エントリ Top 100
    Thunderbird で Exchange Online ( m365 ) の共有メールボックスにアクセスする
    rclone で OneDrive の内容をサーバにバックアップ
    SeleniumWrapperVBA でブラウザを Excel から制御する
    Thunderbird 102.7.0 は Microsoft 365 を使ってる場合には非推奨? 
    2022 年の人気エントリ Top 100
    ハーバード大の CS50 の 2022 年版が公開されてた
    HFS Explorer を使って Windows から HFS+ のディスクを読み取る
    Google アカウントの基本認証は 5/30 でサポート終了
    基本情報は通年で受験可能に
    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/4287
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

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

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

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

    « :: »
    Copyright © 2004-2023 by CLES All Rights Reserved.
    サイト内検索
    検索ワードランキング
    へぇが多いエントリ
    閲覧数が多いエントリ
    1 .アーロンチェアのポスチャーフィットを修理(99774)
    2 .福岡銀がデマの投稿者への刑事告訴を検討中(99163)
    3 .年次の人間ドックへ(99156)
    4 .三菱鉛筆がラミーを買収(98761)
    5 .2023 年分の確定申告完了!(1つめ)(98727)
    最新のエントリ
    cles::blogについて
    誰が書いてる?
    最近行った場所
    サイトポリシー
    タグ一覧
    検索ワードランキング

    Referrers

      Powered by CLES
      Nucleus CMS v3.31SP3/w memcached
      21376887(W:7512 Y:1720 T:0986)
      cles::blogのはてなブックマーク数
      benchmark


      [8]ページ先頭

      ©2009-2025 Movatter.jp