Androidで特定ユーザーのTweetを簡易的に取得したい場合の方法、v1.1/認証対応。
本APIは制約があり、同一IPからの取得は15分あたり15回までとなっている。
v1.0のAPIが2013/6/11に完全にサービス停止されてしまい焦ったが、twitter4jのライブラリを利用する事で簡単に取得する事ができた。
自分用のアプリやおまけ程度の機能として。筆者はまぃまとのトップ画面でTweetをおまけ表示するのに使っている。
参考サイト
http://morado106.blog106.fc2.com/blog-entry-58.html
http://stackoverflow.com/questions/12916539/simplest-php-example-retrieving-user-timeline-with-twitter-api-version-1-1
まず、Twitter4jのライブラリをダウンロードし、jarファイルをプロジェクトのlibsフォルダーにコピーする。
Tweeter4j
http://twitter4j.org/ja/index.html
次に、認証用のキーを取得する。
にアクセスしログオン後、「Create a new application」でアプリ情報を追加(Tweet情報を取得するアプリ)し、OAuth Settingsからキーを4つ取得する。
取得したキーは下記コードのCunsumerKey等にそのまま記述する。
public void init_fetch_tweet(String tweet_user_id,int tweet_num) { try { String strConsumerKey = "*********"; String strConsumerSecret = "*********"; String strAccessToken = "*********"; String strAccessTokenSecret = "*********"; ConfigurationBuilder confbuilder = new ConfigurationBuilder(); confbuilder.setOAuthConsumerKey(strConsumerKey); confbuilder.setOAuthConsumerSecret(strConsumerSecret); confbuilder.setOAuthAccessToken(strAccessToken); confbuilder.setOAuthAccessTokenSecret(strAccessTokenSecret); Twitter twitter = new TwitterFactory(confbuilder.build()).getInstance(); List<Status> statuses = twitter.getUserTimeline(tweet_user_id,new Paging(1,tweet_num)); int count=0; Collections.reverse(statuses); //reverse order for (Status status : statuses){ String tweettext = status.getUser().getName()+":"+status.getText()+"\n ("+status.getCreatedAt().toLocaleString()+")"; //now single tweet is in tweettext } catch(Exception ex){ //failed to fetch tweet } }
This post is also available in: 英語