如何在java中使用twitter4j发布推文?

时间:2012-04-04 06:34:02

标签: java twitter4j

我可以使用twitter4j登录Twitter并获取有关登录用户的信息,但我无法从我的应用程序发布推文。我正在使用java web应用程序发布推文。请参阅下面的代码我使用。

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!");
    }

我得到了以下例外:

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

请帮忙。

3 个答案:

答案 0 :(得分:7)

  1. 转到您已创建的应用程序(https://dev.twitter.com)

  2. 检查您的应用程序设置(>应用程序类型)

  3. '应用程序类型'需要是读取,写入和访问直接消息之一。如果没有,您可以轻松地进行更新。

  4. (我在处理环境中测试了你的代码并且它正在运行)

答案 1 :(得分:4)

首先,重新生成您的访问令牌/机密和消费者密钥/机密。 然后尝试一下。

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);
           }

答案 2 :(得分:1)

状态码401意味着你 not authorized

检查您的凭据是否有效。如果是,可能您的应用程序尚未经过用户验证。请参阅twitter4j site(第7点)

上的示例