Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to post tweet using twitter4j in java?

Tags:

java

twitter4j

I am able to login to twitter using twitter4j and get information about the logged in user but i am not able to post tweet from my application. I am using java web application to post tweet. see the code below that i use.

String ACCESS_TOKEN = "ttttttttt";
    String ACCESS_TOKEN_SECRET = "gggggggggggggg";
    String CONSUMER_KEY = "gggggggggggg";
    String CONSUMER_SECRET = "hhhhhhhhhhhhh";
    String tweet = "";
    if (request.getParameter("tweet") != null) {
        tweet = request.getParameter("tweet");
    }
    AccessToken accessToken = new AccessToken(ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
    OAuthAuthorization authorization = new OAuthAuthorization(ConfigurationContext.getInstance(), CONSUMER_KEY, CONSUMER_SECRET, accessToken);
    Twitter twitter = new TwitterFactory().getInstance(authorization);
    try {
        //twitter.updateStatus("Hello World!");
        twitter.updateStatus(tweet);
    } catch (TwitterException e) {
        System.err.println("Error occurred while updating the status!");
    }

i get the follwing exception:

TwitterException{exceptionCode=[fa54b184-3bf2623f], statusCode=401, retryAfter=0, rateLimitStatus=null, version=2.1.5-SNAPSHOT(build: d372a51b9b419cbd73d416474f4a855f3e889507)}

Please help.

like image 817
Joe Avatar asked Apr 04 '12 06:04

Joe


3 Answers

  1. Go to your already created application (https://dev.twitter.com)

  2. Check your application settings (> Application Type)

  3. 'Application Type' need to be one of Read, Write and Access direct messages. If not you can easily make an update.

(I tested your code in processing environment and it is working)

like image 121
vag Avatar answered Nov 13 '22 19:11

vag


First of all , regenerate your acces token/secret and consumer key/secret. Then try this.

String consumerKey = "yourconsumerKey ";
       String consumerSecret = "yourconsumerSecret";
       String accessToken = "yourAccessToken";
       String accessSecret = "yourAccessSecret";

       ConfigurationBuilder cb = new ConfigurationBuilder();
       cb.setDebugEnabled(true)
           .setOAuthConsumerKey(consumerKey)
           .setOAuthConsumerSecret(consumerSecret)
           .setOAuthAccessToken(accessToken)
           .setOAuthAccessTokenSecret(accessSecret);

       try 
       {
          TwitterFactory factory = new TwitterFactory(cb.build());
          Twitter twitter = factory.getInstance();

          System.out.println(twitter.getScreenName());
          Status status = twitter.updateStatus(latestStatus);
          System.out.println("Successfully updated the status to [" + status.getText() + "].");
           }catch (TwitterException te) {
              te.printStackTrace();
              System.exit(-1);
           }
like image 30
vikiiii Avatar answered Nov 13 '22 19:11

vikiiii


Statuscode 401 means you're not authorized

Check if your credentials are valid. If they are, maybe your application has not been validated by the user. See the examples on twitter4j site (point 7)

like image 1
Boosty Avatar answered Nov 13 '22 20:11

Boosty