我试图使用twitter4j更新twitter上的状态。一切工作正常在本地主机上,但是当我尝试这样做在服务器上,我得到授权错误:尝试更新twitter4j状态时出现错误401
401:Authentication credentials were missing or incorrect. {"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)}
我生成的访问令牌使用本地主机上的“PIN”方法的用户。我认为它不应该在什么地方生成,accessToken.getToken()
和accessToken.getTokenSecret()
值不应该取决于我运行它们的机器,它们应该在任何地方工作,对吧?
这个错误信息是什么意思?我不明白“使用随机数”部分。
UPDATE
好东西是真的搞砸了某个地方。我想立即生成一个服务器上的访问令牌甚至不能让它产生授权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上一切工作正常。
已过时的新用户会遇到此问题:请尝试此新的OAuth教程:http://goo.gl/99vpL – Blundell 2011-07-24 18:05:27
上面的注释有误。此问题仍然完全有效,上面评论中公布的OAuth教程与此处的问题无关。 – seinecle 2014-05-07 07:09:06