package sg.vinova.vss.group5.non.activity; import java.net.URLEncoder; import oauth.signpost.OAuth; import oauth.signpost.OAuthConsumer; import oauth.signpost.OAuthProvider; import oauth.signpost.commonshttp.CommonsHttpOAuthConsumer; import oauth.signpost.commonshttp.CommonsHttpOAuthProvider; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.net.Uri; import android.os.Bundle; import android.preference.PreferenceManager; import android.util.Log; public class RequestTokenActivity extends Activity { private OAuthConsumer consumer; private OAuthProvider provider; private SharedPreferences prefs; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); try { consumer = new CommonsHttpOAuthConsumer(C.CONSUMER_KEY, C.CONSUMER_SECRET); provider = new CommonsHttpOAuthProvider( C.REQUEST_URL + "?scope=" + URLEncoder.encode(C.SCOPE, C.ENCODING) + "&xoauth_displayname=" + C.APP_NAME, C.ACCESS_URL, C.AUTHORIZE_URL); } catch (Exception e) { Log.e(C.TAG, "Error creating consumer / provider",e); } getRequestToken(); } @Override public void onNewIntent(Intent intent) { super.onNewIntent(intent); prefs = PreferenceManager.getDefaultSharedPreferences(this); final Uri uri = intent.getData(); if (uri != null && uri.getScheme().equals(C.OAUTH_CALLBACK_SCHEME)) { Log.i(C.TAG, "Callback received : " + uri); Log.i(C.TAG, "Retrieving Access Token"); getAccessToken(uri); } } private void getRequestToken() { try { Log.d(C.TAG, "getRequestToken() called"); String url = provider.retrieveRequestToken(consumer, C.OAUTH_CALLBACK_URL); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)).setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_FROM_BACKGROUND); this.startActivity(intent); } catch (Exception e) { Log.e(C.TAG, "Error retrieving request token", e); } } private void getAccessToken(Uri uri) { final String oauth_verifier = uri.getQueryParameter(OAuth.OAUTH_VERIFIER); try { provider.retrieveAccessToken(consumer, oauth_verifier); final Editor edit = prefs.edit(); edit.putString("oauth_token", consumer.getToken()); edit.putString("oauth_token_secret", consumer.getTokenSecret()); edit.commit(); String token = prefs.getString(OAuth.OAUTH_TOKEN, ""); String secret = prefs.getString(OAuth.OAUTH_TOKEN_SECRET, ""); consumer.setTokenWithSecret(token, secret); this.startActivity(new Intent(this , LoginActivity.class)); Log.i(C.TAG, "Access Token Retrieved"); } catch (Exception e) { Log.e(C.TAG, "Access Token Retrieval Error", e); } // this.startActivity(new Intent(this , SplashScreen.class)); } }