package com.thisplace.mindrdr;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import com.thisplace.mindrdr.model.OAuthData;
import twitter4j.StatusUpdate;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.User;
import twitter4j.conf.ConfigurationBuilder;
public class OAuthActivity extends Activity {
private OAuthData mOAuthData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_oauth);
mOAuthData = OAuthData.getInstance();
if(mOAuthData.getInternalData(this, mOAuthData.ACCESS_TOKEN) == null) {
//no oauth data stored so we need to scan a QRCode
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, 0);
}else{
//populate getters:
mOAuthData.setAccessToken(this, mOAuthData.getInternalData(this, mOAuthData.ACCESS_TOKEN));
mOAuthData.setAccessTokenSecret(this, mOAuthData.getInternalData(this, mOAuthData.ACCESS_TOKEN_SECRET));
Log.d(this.getClass().getSimpleName(),"accessToken:"+mOAuthData.getAccessToken());
Log.d(this.getClass().getSimpleName(),"accessTokenSecret:"+mOAuthData.getAccessTokenSecret());
Log.i(this.getClass().getSimpleName(),"OAuth data already set");
finaliseIntent(true);
}
}
protected boolean verifyTwitterCredentials()
{
Twitter twitter;
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setOAuthConsumerKey(mOAuthData.getConsumerKey());
cb.setOAuthConsumerSecret(mOAuthData.getConsumerSecret());
cb.setOAuthAccessToken(mOAuthData.getAccessToken());
cb.setOAuthAccessTokenSecret(mOAuthData.getAccessTokenSecret());
TwitterFactory tf = new TwitterFactory(cb.build());
twitter = tf.getInstance();
try {
User user = twitter.verifyCredentials();
return true;
} catch (TwitterException te) {
return false;
}
}
protected void finaliseIntent(Boolean success)
{
if(success){
setResult(RESULT_OK);
}else{
setResult(RESULT_CANCELED);
}
finish();
}
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
Log.i(this.getClass().getSimpleName(),"Scan success");
String contents = intent.getStringExtra("SCAN_RESULT");
String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
Log.i(this.getClass().getSimpleName(),contents);
String[] consumer_oauth = contents.split("\\|");
String access_token = consumer_oauth[0];
String access_token_secret = consumer_oauth[1];
mOAuthData.setInternalData(this, mOAuthData.ACCESS_TOKEN, access_token);
mOAuthData.setAccessToken(this,access_token);
mOAuthData.setInternalData(this, mOAuthData.ACCESS_TOKEN_SECRET, access_token_secret);
mOAuthData.setAccessTokenSecret(this,access_token_secret);
finaliseIntent(true);
} else if (resultCode == RESULT_CANCELED) {
Log.i(this.getClass().getSimpleName(),"Scan failed");
finaliseIntent(false);
}
}
}
}