Ошибка 401 при попытке обновить статус с помощью twitter4j - PullRequest
1 голос
/ 10 ноября 2010

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

401: учетные данные для аутентификации отсутствуют или неверны.{"error": "Invalid \ / used nonce", "request": "\ / 1 \ / statuses \ /update.json"} TwitterException {exceptionCode = [15bb6564-00e4d61f], statusCode = 401, retryAfter = 0, rateLimitStatus= null, версия = 2.1.7-SNAPSHOT (сборка: 6498f401635aacf3388891cc5140b2086ff3f8aa)}

Я сгенерировал токен доступа для пользователя с помощью метода «PIN» на localhost.Я думаю, что не должно иметь значения, где оно было сгенерировано, значения 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)

На локальном хосте всеотлично работает.

Ответы [ 3 ]

4 голосов
/ 16 ноября 2010

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

0 голосов
/ 10 ноября 2010

Для вашей ошибки "401: Учетные данные для проверки подлинности отсутствуют или неверны". Убедитесь, что вы также включили пин-код верификатора в запрос как часть базы подписей.

0 голосов
/ 10 ноября 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...