Вопрос

Я пытаюсь обновить статус в Twitter, используя Twitter4J. Все отлично работает на localhost, но когда я пытаюсь сделать это на сервере, я получаю ошибку авторизации:

401: учетные данные аутентификации отсутствовали или неверны. {«Ошибка»: «Неверный / используемый Nonce», «Запрос»: « / 1 / States /uppdate.json»} TwitterException {ExcectionCodeCode = [15BB6564-00E4D61F], StatusCode = 401, RectryAfter = 0, RatelimitStatus = null, версия = 2.1.7-Snapshot (сборка: 6498F401635AACF3388891CC5140B2086FF3F8AA)}

Я сгенерировал токен доступа для пользователя, используя метод «PIN» на localhost. Я думаю, что это не должно иметь значения, где он был сгенерирован, accessToken.getToken() а также accessToken.getTokenSecret() Значения не должны зависеть от того, какую машину я их бегу, они должны работать где угодно, верно?

Что означает эта ошибка сообщения? Я не понимаю «использовал нон».

ОБНОВИТЬ

Хорошо, что-то действительно испортилось где-то. Я пытаюсь создать токен доступа на сервере сейчас и даже не может сделать его для создания 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 все работает нормально.

Это было полезно?

Решение

Неделя и несколько серых волос позже оказались, что проблема была в местном времени на сервере, который был выключен. Кто-то сделал отличную работу с ясными сообщениями об ошибках в Twitter.

Другие советы

Nonce - это значение, предназначенное для использования только один раз.

Я предполагаю, что код, который вы используете для генерации NONCE, сэкономит NONCE и пытается повторно использовать его.

Я не знаком с библиотекой Twitter4j, но я бы проверил и убедитесь, что вы генерируете новую нон для каждого запроса.

Для вашего «401: учетные данные аутентификации отсутствовали или неверные» ошибки. Убедитесь, что вы также включите PIN-код верификатора с запросом как часть базы подписи.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top