Twitter4j authentication credentials are missing

android, api, java, twitter, twitter4j

Solution

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.

Problem

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.

Original source