我正在尝试使用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上一切正常。
答案 0 :(得分:4)
一个星期后,几个白发后来发现问题是在当地时间关闭的服务器上。有人在推特上发表了明确的错误消息,做得很好。
答案 1 :(得分:0)
nonce是一个仅用于一次的值。
我的猜测是,您用来生成nonce的代码正在保存nonce并尝试重用它。
我不熟悉twitter4j库,但我会检查并确保为每个请求生成一个新的nonce。
答案 2 :(得分:0)
对于“401:身份验证凭据丢失或不正确”错误。确保您还包含验证者引脚,并将请求作为签名库的一部分。