English | Japanese

コードサンプル

サンプルコードは src/twitter4j/examples/ 以下に配置されています。
それぞれ bin/className.cmd|sh で実行できます。

  1. スタテータスの更新
  2. Twitter.updateStatus() メソッドで"今なにをしているか"を更新することができます。
    詳しくは twitter4j.examples.Update.java をご覧ください。

        Twitter twitter = new Twitter(twitterID,twitterPassword);
        Status status = twitter.updateStatus(latestStatus);
        System.out.println("Successfully updated the status to [" + status.getText() + "].");
    

  3. タイムラインの取得
  4. Twitter.get****Timeline() メソッドで友達、パブリック、または指定ユーザの最近のタイムラインを返します。
    詳しくは twitter4j.examples.GetTimelines.java をご覧ください。

        Twitter twitter = new Twitter(twitterID,twitterPassword);
        List<Status> statuses = twitter.getFriendsTimeline();
        System.out.println("Showing friends timeline.");
        for (Status status : statuses) {
            System.out.println(status.getUser().getName() + ":" +
                               status.getText());
        }
    
    Java1.4 や Processing でコンパイルできませんか? FAQ をご覧ください

  5. ダイレクトメッセージの送受信
  6. Twitter.sendDirectMessage() / Twitter.getDirectMessages() メソッドでダイレクトメッセージの送受信ができます。
    このメッセージは送信した相手にしか見えません。
    詳しくは twitter4j.examples.SendDirectMessage.java をご覧ください。

        Twitter twitter = new Twitter(senderID,senderPassword);
        sender.sendDirectMessage(recipientId,message);
        Twitter receiver = new Twitter(recipientId,recipientPassword);
        List<DirectMessage> messages = receiver.getDirectMessages();
        for (DirectMessage message : messages) {
            System.out.println("Sender:" + message.getSenderScreenName());
            System.out.println("Text:" + message.getText() + "\n");
        }
    
    Java1.4 や Processing でコンパイルできませんか? FAQ をご覧ください

  7. Tweetの検索
  8. Query クラスと Twitter.search(twitter4j.Query) メソッドで検索を行えます。

        Twitter twitter = new Twitter();
        Query query = new Query("source:twitter4j yusukey");
        QueryResult result = twitter.search(query);
        System.out.println("hits:" + result.getTotal());
        for (Tweet tweet : result.getTweets()) {
            System.out.println(tweet.getFromUser() + ":" + tweet.getText());
        }
    
    Java1.4 や Processing でコンパイルできませんか? FAQ をご覧ください

  9. 非同期API
  10. 非同期APIを使うと実際のメソッドコールの終了を待たずして処理を続行することができます。
    実際のメソッドコールは別のスレッドで行われ、処理の結果は TwitterListener インターフェースにて受信できます。
    非同期 API を使うには Twitter クラスの替わりに twitter4j.AsyncTwitter クラスを使い、***Async() メソッドを twitter4j.TwitterListener のインスタンスと共に呼び出します。
    詳しくは twitter4j.examples.AsyncUpdate.java をご覧ください。

        AsyncTwitter twitter = new AsyncTwitter(senderId,senderPassword);
        twitter.updateStatusAsync(args[2], new TwitterAdapter() {
            @Override public void updatedStatus(Status status) {
              System.out.println("Successfully updated the status to [" +
                       status.getText() + "].");
            }
    
            @Override public void onException(TwitterException e, int method) {
              if (method == AsyncTwitter.UPDATE_STATUS) {
                e.printStackTrace();
              } else {
                throw new AssertionError("Should not happen");
              }
            }
        }
        );
    

  11. ページ処理
  12. いくつかの API はページ処理をサポートしています。ぺージ処理には以下のパラメータを指定できます:

    page: ページ
    count: 1ページあたりの件数
    since_id: 指定した id 以降の要素を取得
    max_id: 指定した id 以前の情報を取得
    これらのパラメータの指定には Paging クラスを利用します。
    全てのパラメータが必ずサポートされているわけではないことに気をつけてください。どのパラメータがサポートされているかどうかはサポート API リストを確認してください。
        Twitter twitter = new Twitter("user", "password");
        // 2ページ目をリクエスト, 1ページあたりの件数は 40件
        Paging paging = new Paging(2, 40);
        List statuses = twitter.getFriendsTimeline(paging);
        for (Status status : statuses) {
            System.out.println(status.getUser().getScreenName() + ":" + status.getText());
        }
    
        // 3ページ目をリクエスト、since_id は (long)1000
        statuses = twitter.getFriendsTimeline(new Paging(3).sinceId(1000l));
        for (Status status : statuses) {
            System.out.println(status.getUser().getScreenName() + ":" + status.getText());
        }
    

  13. OAuth認可
  14. OAuth 認可方式を使うとユーザーにユーザID、パスワードを提供してもらうことなくユーザのアカウントにアクセスできます。OAuth を利用するには http://twitter.com/oauth_clients/new で事前にアプリケーションを登録しておき consumer key, consumer secret を取得しておく必要があります。key と secret は Twitter#setOAuthConsumer() でセットするか、システムプロパティで VM パラメータとして以下のように指定しておきます。

    -Dtwitter4j.oauth.consumerKey=[consumer key]
    -Dtwitter4j.oauth.consumerSecret=[consumer secret]
    最初はユーザアカウントへのアクセス権がありません。以下のように authorization URL にユーザを誘導し、AccessToken を取得する必要があります。
      public static void main(String args[]) thrwos Exception{
        Twitter twitter = new Twitter();
        twitter.setOAuthConsumer("[consumer key]", "[consumer secret]");
        RequestToken requestToken = twitter.getOAuthRequestToken();
        AccessToken accessToken = null;
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        while (null == accessToken) {
          System.out.println("Open the following URL and grant access to your account:");
          System.out.println(requestToken.getAuthorizationURL());
          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 = requestToken.getAccessToken();
             }
          } catch (TwitterException te) {
            if(401 == te.getStatusCode()){
              System.out.println("Unable to get the access token.");
            }else{
              te.printStackTrace();
            }
          }
        }
        //将来の参照用に accessToken を永続化する
        storeAccessToken(twitter.verifyCredentials().getId() , at);
        Status status = twitter.updateStatus(args[0]);
        System.out.println("Successfully updated the status to [" + status.getText() + "].");
        System.exit(0);
      }
      private void storeAccessToken(int useId, AccessToken at){
        //at.getToken() を保存
        //at.getTokenSecret() を保存
      }
    
    AccessToken を取得した以降は RequestToken は不要になります。次回からは consumer key/secret と AccessToken のみでユーザアカウントにアクセスできます。
      public static void main(String args[]) thrwos Exception{
        Twitter twitter = new Twitter();
        twitter.setOAuthConsumer("[consumer key]", "[consumer secret]");
        AccessToken accessToken = loadAccessToken(Integer.parseInt(args[0]));
        twitter.setAccessToken(accessToken);
        Status status = twitter.updateStatus(args[1]);
        System.out.println("Successfully updated the status to [" + status.getText() + "].");
        System.exit(0);
      }
      private AccessToken loadAccessToken(int useId){
        String token = // load from a persistent store
        String tokenSecret = // load from a persistent store
        return new AccessToken(token, tokenSecret);
      }
    
    See also: Twitter API Wiki / OAuth FAQ

  15. ストリーミング API
  16. Query クラスと Twitter.search(twitter4j.Query) メソッドで検索を行えます。

        Twitter twitter = new Twitter();
        Query query = new Query("source:twitter4j yusukey");
        QueryResult result = twitter.search(query);
        System.out.println("hits:" + result.getTotal());
        for (Tweet tweet : result.getTweets()) {
            System.out.println(tweet.getFromUser() + ":" + tweet.getText());
        }
    
    Java1.4 や Processing でコンパイルできませんか? FAQ をご覧ください