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";

// Twitter

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);

}

}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐