package com.sudosaints.excusepro; import twitter4j.StatusUpdate; import twitter4j.Twitter; import twitter4j.TwitterException; import twitter4j.TwitterFactory; import twitter4j.auth.AccessToken; import twitter4j.conf.ConfigurationBuilder; import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.widget.Toast; import com.neovisionaries.android.twitter.TwitterOAuthView; import com.neovisionaries.android.twitter.TwitterOAuthView.Result; import com.sudosaints.excusepro.model.ShareObject; import com.sudosaints.excusepro.util.IntentExtras; import com.sudosaints.excusepro.util.Logger; import com.sudosaints.excusepro.util.ResultStatus; /** * * @author Vishal * */ public class TwitterOAuthActivity extends Activity implements TwitterOAuthView.Listener { // Replace values of the parameters below with your own. private static final String CONSUMER_KEY = "CONSUMER_KEY"; private static final String CONSUMER_SECRET = "CONSUMER_SECRET"; private static final String CALLBACK_URL = "http://www.sudosaints.com"; private static final boolean DUMMY_CALLBACK_URL = true; private TwitterOAuthView view; private boolean oauthStarted; Logger logger; Twitter twitter; ShareObject shareObject; boolean isDestroyed = false; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Create an instance of TwitterOAuthView. view = new TwitterOAuthView(this); logger = new Logger(this); if(getIntent().hasExtra(IntentExtras.SHARE_OBJECT_EXTRA)) { shareObject = (ShareObject) getIntent().getSerializableExtra(IntentExtras.SHARE_OBJECT_EXTRA); setContentView(view); oauthStarted = false; } else { finish(); } } @Override protected void onResume() { super.onResume(); if (oauthStarted) { return; } oauthStarted = true; // Start Twitter OAuth process. Its result will be notified via // TwitterOAuthView.Listener interface. view.start(CONSUMER_KEY, CONSUMER_SECRET, CALLBACK_URL, DUMMY_CALLBACK_URL, this); } public void onSuccess(TwitterOAuthView view, AccessToken accessToken) { // The application has been authorized and an access token // has been obtained successfully. Save the access token // for later use. showMessage("Authorized by " + accessToken.getScreenName()); ConfigurationBuilder configurationBuilder = new ConfigurationBuilder(); configurationBuilder.setOAuthConsumerKey(CONSUMER_KEY); configurationBuilder.setOAuthConsumerSecret(CONSUMER_SECRET); configurationBuilder.setDebugEnabled(true); twitter = new TwitterFactory(configurationBuilder.build()).getInstance(); twitter.setOAuthAccessToken(accessToken); new ShareTweet().execute(); } public void onFailure(TwitterOAuthView view, Result result) { // Failed to get an access token. showMessage("Failed due to " + result); } private void showMessage(String message) { // Show a popup message. Toast.makeText(this, message, Toast.LENGTH_LONG).show(); } private class ShareTweet extends AsyncTask<Void, Void, ResultStatus> { @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected ResultStatus doInBackground(Void... params) { try { StatusUpdate statusUpdate = new StatusUpdate(shareObject.getMessage()); twitter4j.Status status = twitter.updateStatus(statusUpdate); logger.debug(status.toString()); } catch (TwitterException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(ResultStatus result) { super.onPostExecute(result); if(!isDestroyed) { finish(); } } } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); isDestroyed = true; } }