5

我可以使用 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)}

请帮忙。

4

3 回答 3

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

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

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

(我在处理环境中测试了您的代码并且它正在工作)

于 2012-05-23T17:39:35.730 回答
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);
           }
于 2012-04-04T07:20:09.533 回答
1

状态码 401 表示您 未获得授权

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

于 2012-04-04T07:04:37.400 回答