尝试使用twitter4j更新状态时出现错误401

时间:2010-11-10 19:01:01

标签: java twitter twitter-oauth twitter4j http-status-code-401

我正在尝试使用twitter4j在Twitter上更新状态。在localhost上一切正常,但是当我尝试在服务器上执行时,我收到授权错误:

  

401:身份验证凭据丢失或不正确。   {“error”:“Invalid \ / used nonce”,“request”:“\ / 1 \ / statuses \ /update.json”}   TwitterException {exceptionCode = [15bb6564-00e4d61f],statusCode = 401,retryAfter = 0,rateLimitStatus = null,version = 2.1.7-SNAPSHOT(build:6498f401635aacf3388891cc5140b2086ff3f8aa)}

我在localhost上使用“PIN”方法为用户生成了访问令牌。我认为生成它的位置无关紧要,accessToken.getToken()accessToken.getTokenSecret()值不应该取决于我运行它们的机器,它们应该在任何地方工作,对吗?

此错误消息是什么意思?我不明白“使用过的nonce”部分。

更新

好的,某些地方真的搞砸了。我正在尝试在服务器上生成访问令牌,甚至无法让它为我生成授权URL:

Twitter twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer("twitterConsumerKey", "twitterConsumerSecret");

RequestToken requestToken = twitter.getOAuthRequestToken();
System.out.println(requestToken.getAuthorizationURL());

这失败了:

401:Authentication credentials were missing or incorrect.
Failed to validate oauth signature and token
TwitterException{exceptionCode=[68a00bf1-d29b9452], statusCode=401, retryAfter=0, rateLimitStatus=null, version=2.1.7-SNAPSHOT(build: 6498f401635aacf3388891cc5140b2086ff3f8aa)}
at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:308)
        at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:72)
        at twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:103)
        at twitter4j.http.OAuthAuthorization.getOAuthRequestToken(OAuthAuthorization.java:124)
        at twitter4j.TwitterOAuthSupportBaseImpl.getOAuthRequestToken(TwitterOAuthSupportBaseImpl.java:87)
        at twitter4j.Twitter.getOAuthRequestToken(Twitter.java:54)
        at twitter4j.TwitterOAuthSupportBaseImpl.getOAuthRequestToken(TwitterOAuthSupportBaseImpl.java:80)
        at twitter4j.Twitter.getOAuthRequestToken(Twitter.java:54)

在localhost上一切正常。

3 个答案:

答案 0 :(得分:4)

一个星期后,几个白发后来发现问题是在当地时间关闭的服务器上。有人在推特上发表了明确的错误消息,做得很好。

答案 1 :(得分:0)

nonce是一个仅用于一次的值。

我的猜测是,您用来生成nonce的代码正在保存nonce并尝试重用它。

我不熟悉twitter4j库,但我会检查并确保为每个请求生成一个新的nonce。

答案 2 :(得分:0)

对于“401:身份验证凭据丢失或不正确”错误。确保您还包含验证者引脚,并将请求作为签名库的一部分。