androidのtwitter連携がわかったのでメモメモ

まず、twitter developerでアプリ登録

アプリ登録したら、consumer key と consumer sercretをメモメモ
注意:Callback URLが空だと動かないので、なんでもいいから入れる。


さてコード~

developerでメモしておいたconsumer key と consumer sercretをクラス変数に。

import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.auth.AccessToken;
import twitter4j.auth.RequestToken;

public class twitterPost extends Activity {

static final String CALLBACK_URL = "test://oauth"; // scheme="test" android:host="oauth"のschemeとhost
static final String CONSUMER_KEY = "xxxxxxx";
static final String CONSUMER_SECRET ="xxxxxx";
private RequestToken _reqToken;
private Twitter _twitter;
private String tokenKey;
private String tokenSecret;


//認証
private void twitterOAuth(){
try{
_twitter = new TwitterFactory().getInstance();
_twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
_reqToken = _twitter.getOAuthRequestToken(CALLBACK_URL);

String url = _reqToken.getAuthorizationURL();
Intent intent = new Intent(Intent.ACTION_VIEW , Uri.parse(url));

//ブラウザ起動
startActivity(intent);
}catch(TwitterException e){
Log.e("oauth_error", e.getMessage());
}
}

//認証完了時に呼ばれる 投稿処理
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);

Uri uri = intent.getData();
if(uri == null || !uri.toString().startsWith(CALLBACK_URL)){
Toast.makeText(twitterPost.this, "twitter:エラーが発生しました。",Toast.LENGTH_SHORT).show();
return;
}

AccessToken aToken = null;
String verifier = uri.getQueryParameter("oauth_verifier");
if(verifier == null || verifier.length() == 0){
Toast.makeText(twitterPost.this, "twitter:認証されませんでした", Toast.LENGTH_SHORT).show();
return;
}
try{
aToken = _twitter.getOAuthAccessToken(_reqToken, verifier);
}catch(TwitterException e){
Log.e("oauth_error" , e.getMessage());
return;
}

SharedPreferences pref=getSharedPreferences("Twitter_setting",MODE_PRIVATE);

SharedPreferences.Editor editor=pref.edit();
editor.putString("tokenKey",aToken.getToken());
editor.putString("tokenSecret",aToken.getTokenSecret());
editor.putString("status","available");
editor.commit();

try {

CharSequence postStr = post_txt.getText();
_twitter.updateStatus(postStr.toString());
Toast.makeText(twitterPost.this, "twitter:投稿しました。", Toast.LENGTH_SHORT).show();

} catch (TwitterException e) {

Toast.makeText(twitterPost.this, "twitter:投稿に失敗しました。", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}


//認証済みか確認 onClickなどで。
SharedPreferences pref = getSharedPreferences("Twitter_setting",MODE_PRIVATE);
String tStatus = pref.getString("status", "");

if(tStatus != null && tStatus.equals("available")){

tokenKey=pref.getString("tokenKey", "");
tokenSecret = pref.getString("tokenSecret", "");



ざっくりメモなので、これだけでは正常に動きませんわよ。