Twitter4j authentication credentials are missing

12,987

Problem is following lines.

TwitterFactory tf = new TwitterFactory(cb.build());
Twitter twitter = new TwitterFactory().getInstance();

You are passing the configuration to one TwitterFactory instance and using another TwitterFactory instance to get the Twitter instance.

Hence, You are getting java.lang.IllegalStateException: Authentication credentials are missing

I suggest you to modify your code as follows:

    //Twitter Conf.
    ConfigurationBuilder cb = new ConfigurationBuilder();
    cb.setDebugEnabled(true)
            .setOAuthConsumerKey(CONSUMER_KEY)
            .setOAuthConsumerSecret(CONSUMER_SECRET)
            .setOAuthAccessToken(ACCESS_KEY)
            .setOAuthAccessTokenSecret(ACCESS_SECRET);

    TwitterFactory tf = new TwitterFactory(cb.build());
    Twitter twitter = tf.getInstance();

And use this twitter instance. It will work.

Share:
12,987
Nizar B.
Author by

Nizar B.

Updated on June 09, 2022

Comments

  • Nizar B.
    Nizar B. almost 2 years

    I would like to make a tweet with Twitter4j in my Android app. Here is my code:

     //TWITTER SHARE.
    @Click (R.id. img_btn_twitter)
    @Background
    public void twitterPostWall(){
    
        try {
    
    
            //Twitter Conf.
            ConfigurationBuilder cb = new ConfigurationBuilder();
            cb.setDebugEnabled(true)
                    .setOAuthConsumerKey(CONSUMER_KEY)
                    .setOAuthConsumerSecret(CONSUMER_SECRET)
                    .setOAuthAccessToken(ACCESS_KEY)
                    .setOAuthAccessTokenSecret(ACCESS_SECRET);
    
            TwitterFactory tf = new TwitterFactory(cb.build());
            Twitter twitter = new TwitterFactory().getInstance();
            twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
    
            try {
                RequestToken requestToken = twitter.getOAuthRequestToken();
    
                Log.e("Request token: ", "" + requestToken.getToken());
                Log.e("Request token secret: ", "" + requestToken.getTokenSecret());
                AccessToken accessToken = null;
    
    
            }
    
            catch (IllegalStateException ie) {
    
                if (!twitter.getAuthorization().isEnabled()) {
                    Log.e("OAuth consumer key/secret is not set.", "");
                }
            }
    
    
            Status status = twitter.updateStatus(postLink);
            Log.e("Successfully updated the status to [", ""  + status.getText() + "].");
    
        }
    
        catch (TwitterException te) {
            Log.e("TWEET FAILED", "");
    
        }
    }
    

    I always get this error message from Twitter4j: java.lang.IllegalStateException: Authentication credentials are missing. See http://twitter4j.org/en/configuration.html for the detail. But as you can see I'm using builder to set my key. Can someone help me to fix it please? thanks.