Reputation: 112
I can successfully log in to twitter using twitter4j in android. When I am already logged in, I want to get the accesstoken of the logged in user. See below code.
Uri uri = getIntent().getData();
if (uri != null && uri.toString().startsWith(TWITTER_CALLBACK_URL)) {
String verifier = uri.getQueryParameter(TWITTER_OAUTH_VERIFIER);
try {
AccessToken accessToken = twitter.getOAuthAccessToken(requestToken, verifier);
Editor e = mSharedPreferences.edit();
e.putString(PREF_KEY_OAUTH_TOKEN, accessToken.getToken());
e.putString(PREF_KEY_OAUTH_SECRET, accessToken.getTokenSecret());
e.putBoolean(PREF_KEY_TWITTER_LOGIN, true);
e.commit();
FunctionToCall(accessToken);
}
catch (Exception e) {
}
}
else{
//HERE IS WHERE THE PROGRAM GOES WHEN THE USER IS ALREADY LOGGED IN.
//I WANT TO GET THE ACCESS TOKEN HERE (AccessToken as object not as String)
so that I can pass it to the function
FunctionToCall(accessToken);
}
loginToTwitter();
}
private void loginToTwitter() {
// Check if already logged in
if (!isTwitterLoggedInAlready()) {
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();
try {
requestToken = twitter.getOAuthRequestToken(TWITTER_CALLBACK_URL);
TwitterLogin.this.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(requestToken.getAuthenticationURL())));
} catch (TwitterException e) {
e.printStackTrace();
}
} else {
//I want to get the ACCESS TOKEN OBJECT either here or at the above code
//I can get the Access token as string (but I want AccessToken as object not as String)
Log.e("Twitter OAuth Token", "> " + mSharedPreferences.getString(PREF_KEY_OAUTH_TOKEN, "0"));
}
}
Any help would be much appreciated. Thanks.
Upvotes: 0
Views: 383
Reputation: 3678
Getting preferences on Android is done with the SharedPreferences which you can get with PreferenceManager.
Use this code to get your settings and recreate the accesstoken:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(contextInTask);
String token = prefs.getString(PREF_KEY_OAUTH_TOKEN, "");
String secret = prefs.getString(PREF_KEY_OAUTH_SECRET, "");
AccessToken token = new AccessToken(token, secret);
If you happen to have the (Twitter) userId you can also use:
AccessToken token = new AccessToken(token, secret, userId);
Upvotes: 1