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: 英語

