Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Android code snippet - OAuth verifier process (with Twitter4J)
public class OAuthVerify extends Activity {
private static final String CONSUMER_KEY = "";
private static final String CONSUMER_SECRET = "";
private static final String CALLBACK_URL = "myoauthapp://oauthcallback/";
private Context mContext;
private WebView mWebView;
private Twitter mTwitter;
private RequestToken mRequestToken;
private AccessToken mAccessToken;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_PROGRESS);
getWindow().requestFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.main);
// Add here initialize mTwitter object with Twitter4J
mTwitter = new TwitterFactory().getInstance();
mTwitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
mRequestToken = mTwitter.getOAuthRequestToken(CALLBACK_URL);
mContext = getApplicationContext();
mIntent = getIntent();
mWebView = (WebView)findViewById(R.id.webview);
mWebView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading (WebView view, String url) {
if (url.startsWith(CALLBACK_URL)) {
Uri uri = Uri.parse(url);
completeVerify(uri);
return true;
}
return false;
}
});
mWebView.getSettings().setAppCacheEnabled(false);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.clearCache(true);
mWebView.clearFormData();
getWindow().setFeatureInt(Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON);
final Activity activity = this;
mWebView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView w, int p) {
activity.setProgress(p * 100);
}
});
// AsyncTask to load mRequestToken.getAuthorizationURL() into mWebView
OAuthTask oauthTask = new OAuthTask();
oauthTask.execute();
}
private void completeVerify(Uri uri) {
if (uri != null) {
String verifier = uri.getQueryParameter("oauth_verifier");
try {
mAccessToken = mTwitter.getOAuthAccessToken(mRequestToken, verifier);
mTwitter.setOAuthAccessToken(mAccessToken);
// Add code here to save the OAuth AccessToken and AccessTokenSecret into SharedPreferences
} catch (Exception e) {
Log.d(LOG_TAG, "Cannot get AccessToken: " + e.getMessage());
}
setResult(Activity.RESULT_OK, mIntent);
finish();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment