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", "");
ざっくりメモなので、これだけでは正常に動きませんわよ。
まず、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", "");
ざっくりメモなので、これだけでは正常に動きませんわよ。