android twitter第三方登录,Android Twitter第三方登录&获取用户信息
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.google.gson.Gson;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.User;
import twitter4j.auth.AccessToken;
import twitter4j.auth.RequestToken;
import twitter4j.conf.Configuration;
import twitter4j.conf.ConfigurationBuilder;
public class TwitterLoginActivity extends Activity {
// Constants
static String TWITTER_CONSUMER_KEY = "Your consumer key";
static String TWITTER_CONSUMER_SECRET = "Your consumer secret";
// Preference Constants
static String PREFERENCE_NAME = "twitter_oauth";
static final String PREF_KEY_OAUTH_TOKEN = "oauth_token";
static final String PREF_KEY_OAUTH_SECRET = "oauth_token_secret";
static final String PREF_KEY_TWITTER_LOGIN = "isTwitterLogedIn";
static final String TWITTER_CALLBACK_URL = "oauth://t4jsample";
// Twitter oauth urls
static final String URL_TWITTER_AUTH = "auth_url";
static final String URL_TWITTER_OAUTH_VERIFIER = "oauth_verifier";
static final String URL_TWITTER_OAUTH_TOKEN = "oauth_token";
private static Twitter twitter;
private static RequestToken requestToken;
private String verifier;
private GameView gameView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
startLoginTwitter();
}
/**
* 调用Twitter登录的地方调用此方法即可
*/
public void startLoginTwitter() {
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.setOAuthConsumerKey(TWITTER_CONSUMER_KEY);
builder.setOAuthConsumerSecret(TWITTER_CONSUMER_SECRET);
Configuration configuration = builder.build();
TwitterFactory factory = new TwitterFactory(configuration);
twitter = factory.getInstance();
new Thread() {
@Override
public void run() {
try {
requestToken = twitter
.getOAuthRequestToken(TWITTER_CALLBACK_URL);
} catch (TwitterException e) {
e.printStackTrace();
}
TwitterLoginActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
if (null != requestToken.getAuthenticationURL()) {
gameView.loadUrl(requestToken.getAuthenticationURL());
}
}
});
}
}.start();
}
public class GameWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
LogUtil.i("shouldOverrideUrlLoading:" + url);
if (null != url) {
Uri uri = Uri.parse(url);
if ("oauth".equals(uri.getScheme())
&& "t4jsample".equals(uri.getAuthority())) {
handleCallBack(uri);
return true;
}
};
return false;
}
}
private void handleCallBack(Uri uri) {
// oAuth verifier
verifier = uri.getQueryParameter(URL_TWITTER_OAUTH_VERIFIER);
new Thread() {
@Override
public void run() {
try {
// Get the access token
AccessToken accessToken = twitter.getOAuthAccessToken(
requestToken, verifier);
new Thread(new Runnable() {
@Override
public void run() {
getUserInfo(accessToken);
}
}).start();
} catch (Exception e) {
Log.e("Twitter Login Error", "> " + e.getMessage());
}
}
}.start();
}
private void getUserInfo(AccessToken accessToken) {
Gson gson = new GsonFactory().create();
String userId = String.valueOf(accessToken.getUserId());
try {
User user = twitter.showUser(accessToken.getUserId());
String userImage = user.getProfileImageURL().toString();
String userName = user.getName();
String userSrceenName = user.getScreenName();
String userEmail = user.getEmail();
Log.e("getTwitterInfo", "userId: " + userId + " userName : " + userName + " userImage : " + userImage + " userSrceenName : " + userSrceenName + " userEmail :" + userEmail);
} catch (Exception e) {
e.printStackTrace();
}
HashMap tw_resp = new HashMap();
tw_resp.put("userId", userId);
tw_resp.put("userImage", userImage);
tw_resp.put("userName", userName);
tw_resp.put("userSrceenName", userSrceenName);
tw_resp.put("userEmail", userEmail);
String jsonString = gson.toJson(tw_resp);
}
}
更多推荐



所有评论(0)