twitter4j:401身份验证凭证丢失或不正确

问题描述:

我目前正在尝试获取一群用户的userTimeline。这在过去对我有用,但现在不再适用了。我使用twitter4j并使用oauth。迄今为止,我在我的帐户上注册了2个应用程序,这两个应用程序都应该能够访问twitter-api。然而,从昨天开始,我得到一个401认证重新认证失踪或不正确(尝试两个应用程序)。 Twitter是否对API做出任何近期更改?我应该设置一个新的Twitter帐户吗?这是创建应用程序并允许它访问您自己的帐户的适当方式吗?twitter4j:401身份验证凭证丢失或不正确

这是代码:

ConfigurationBuilder cb = new ConfigurationBuilder(); 
    cb.setDebugEnabled(true) 
     .setOAuthConsumerKey("q...w") 
     .setOAuthConsumerSecret("R...o") 
     .setOAuthAccessToken("2...7") 
     .setOAuthAccessTokenSecret("O....8"); 

    TwitterFactory tf = new TwitterFactory(cb.build()); 

    Twitter twitter = tf.getInstance(); 
    for (Map.Entry<Long, String> entry : tmls.entrySet()) { 

     long uid = entry.getKey(); 

     Paging paging = new Paging(1, count); 

     ResponseList<Status> rls; 

     try { 
      rls = twitter.getUserTimeline(uid, paging); 

      for (int j = 0 ; j < rls.size() ; j++) { 

       if (false == ltindex.contains(uid)) { 


        alsa.add(new String[] { String.valueOf(rls.get(j).getId()) , String.valueOf(uid), rls.get(j).getText() , "", entry.getValue(), String.valueOf(rls.get(j).getCreatedAt().getTime()) }); 

       } 

      } 


     } catch (TwitterException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 

错误:

401:Authentication credentials (http://dev.twitter.com/pages/auth) were missing or incorrect. Ensure that you have set valid conumer key/secret, access token/secret, and the system clock in in sync. 
    error - Not authorized 
    request - /1/statuses/user_timeline.json?user_id=14221532&include_rts=true&include_entities=false&count=10&page=1 
    Relevant discussions can be on the Internet at: 
    http://www.google.co.jp/search?q=ced778ef or 
    http://www.google.co.jp/search?q=10a1ea9d 
    TwitterException{exceptionCode=[ced778ef-10a1ea9d], statusCode=401, retryAfter=0, rateLimitStatus=RateLimitStatusJSONImpl{remainingHits=273, hourlyLimit=350, resetTimeInSeconds=1304422, secondsUntilReset=845, resetTime=Tue May 03 11:36:48 UTC 2011}, version=2.2.3-SNAPSHOT(build: ddf24547632bf3a28b899e3d75b110de43f71c0f)} 
    at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:189) 
    at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:65) 
    at twitter4j.internal.http.HttpClientWrapper.get(HttpClientWrapper.java:85) 
    at twitter4j.TwitterImpl.get(TwitterImpl.java:1738) 
    at twitter4j.TwitterImpl.getUserTimeline(TwitterImpl.java:246) 
    at getExpertTweets.getSpecificOpinions(getExpertTweets.java:89) 
    at classifyTweet.main(classifyTweet.java:57) 
    [email protected]:~# sudo ntpdate pool.ntp.org 
+0

你检查的时候您的系统上? http://www.coffeepowered.net/2009/12/05/system-date-considered-important/ – 2011-05-03 11:51:01

+1

是的,我用ntpdate pool.ntp.org更新了几次 – jcfrei 2011-05-03 12:13:53

+0

更新:这似乎只发生在某些用户。叽叽喳喳似乎在没有授权和没有认证作出区分。没有授权意味着时间线是私人的? – jcfrei 2011-05-03 22:16:33

我有同样的问题。我使用的消费者密钥和消费者密码是正确的,我的机器同步。问题是我在dev.twitter.com上注册我的应用程序时没有设置回调URL。一旦我确定了,一切工作。

+1

如何设置callback_url,它表示无效的网址。我用什么格式:// twitter – aditya 2013-09-10 05:27:00

+0

arghh!完全忘记了这一点。感谢您节省我的一天.. – 2014-04-26 09:14:23

+0

它正在工作...... !!! – 2016-05-11 10:54:07

使用者密钥和令牌存在问题。按照步骤。

登录到https://dev.twitter.com/并转到我的应用程序意味着您的受尊敬的应用程序。 并转到设置和更改访问权限 只读 到 读,写和直接的信息

和更新数据,如果没有被刷新过,然后重新创建令牌和更新数据和您的程序太多。并运行该程序,并确保您的lib文件夹中包含所有jar文件。 问题就解决了。

我以为我会分享这个以防万一它可以帮助别人搜索这个异常消息。

虽然测试的Twitter认证JSF应用程序,我尝试以下使用案例:

打开Twitter的认证窗口。 输入正确的凭据并登录。

它工作正常。所以然后我尝试:

打开Twitter身份验证窗口。 关闭Twitter认证窗口。 再次打开Twitter认证窗口。 输入正确的凭据并点击登录。

后者总是导致401身份验证凭据丢失或不正确的异常。

我的问题是,服务器重新启动了Twitter身份验证过程,但RequestToken.getAuthenticationURL()的值没有正确传回到UI并导致它使用旧URL调用Twitter API。

简而言之,确保客户端使用的身份验证URL与服务器期望的身份验证URL匹配。

+0

我使用了请求令牌URL:https://api.twitter.com/oauth/request_token – 2018-03-09 17:35:04

今天02.05.2015我得到了类似的错误使用twitter4j 3.0.x版本。

我知道了,直到我更新twitter4j到版本4.0.0。

<dependencies> 
    <dependency> 
     <groupId>org.twitter4j</groupId> 
     <artifactId>twitter4j-core</artifactId> 
     <version>[4.0,)</version> 
    </dependency> 
    ... 

我面临过这样的问题,以及与正确的系统时间和API密钥/秘密。

原来,一个需要回调网址一旦设定设置为https://api.twitter.com/oauth/request_token - 你会看到Twitter的授权屏幕。

您也可以按“测试OAuth”使用OAuth Tool进行测试,并将https://api.twitter.com/oauth/request_token作为POST请求的请求URI。

我面临着同样的问题,我固定的,如果设备日期和时间不正确,就会产生这个问题..