kads
kads

Reputation: 112

Get Accestoken of logged in user in twitter using twitter4j android

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

Answers (1)

PieterAelse
PieterAelse

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

Related Questions