Я пытаюсь обновить статус на twitter с помощью twitter4j. Все отлично работает на локальном хосте, но когда я пытаюсь сделать это на сервере я получаю сообщение об ошибке авторизации:Ошибка 401 при попытке обновить статус с помощью twitter4j
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()
не должны зависеть от того, на какой машине я их запускаю, они должны работать в любом месте, правильно?
Что означает это сообщение об ошибке? Я не понимаю «использую nonce» часть.
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
Комментарий выше неправильный. Этот вопрос по-прежнему остается в силе, и учебное пособие по OAuth, опубликованное в комментарии выше, не имеет никакого отношения к вопросу здесь. – seinecle