Ошибка аутентификации Twitter 401 (не синхронизирует ли Thread.sleep () часы) - PullRequest
1 голос
/ 22 октября 2011

Я много размышлял перед публикацией этих вопросов.У меня есть несколько вопросов, касающихся Twitter и Twitter4j API.Я собираю подписчиков пользователей из твиттера.Некоторое время он работает хорошо, а затем показывает ошибку

401:Authentication credentials ( http://dev.twitter.com/pages/auth) were missing or incorrect. Ensure that you have set valid conumer key cret, access token cret, and the system clock in in sync.
error - Timestamp out of bounds
request - /1/account erify_credentials.json?include_entities=false
Relevant discussions can be on the Internet at:
http://www.google.co.jp/search?q=6f0f59ca or
http://www.google.co.jp/search?q=3f8a87d4
TwitterException{exceptionCode=[6f0f59ca-3f8a87d4], statusCode=401, retryAfter=0, rateLimitStatus=null, version=2.2.0}
at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:189)
at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:65)
at twitter4j.internal.http.HttpClientWrapper.get(HttpClientWrapper.java:93)
at twitter4j.TwitterBaseImpl.fillInIDAndScreenName(TwitterBaseImpl.java:131)
at twitter4j.TwitterImpl.verifyCredentials(TwitterImpl.java:1150)
at com.xinlab.blueapple.twitterrobot.ConvertRobot$1.run(ConvertRobot.java:77)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
Failed to get mentions: 401:Authentication credentials ( http://dev.twitter.com/pages/auth) were missing or incorrect. Ensure that you have set valid conumer key cret, access token cret, and the system clock in in sync.
error - Timestamp out of bounds
request - /1/account erify_credentials.json?include_entities=false

Я посмотрел в Интернете, но не получил правильный ответ.Некоторые парни предлагали синхронизировать ваши часы, но никто не упомянул, как синхронизировать (я не знаю, в этом проблема или нет, могут быть и другие проблемы).

Учетные данные не могут быть неправильными, так как они нормально работают для 15-20 мин .Я также хотел бы сказать, что я также использую Thread.sleep(x), поскольку Twitter не позволяет запрашивать более 350 запросов в час.

Так что, если проблема заключается в синхронизации времени, как сказали большинство пользователей вдругие посты - это то, что связано с Thread.sleep(12000)

Обновление: я понял, что момент, когда я получаю сообщение об ошибке, - это время, когда Twitter запрашивает подписчиков у пользователя, чей твит защищен.Это как-то связано с этим?

Ответы [ 3 ]

1 голос
/ 09 ноября 2011

Рекомендуется синхронизировать ваши часы, потому что запрос имеет временную метку, которая используется для заполнения алгоритма хеширования, когда он генерирует подпись, используемую для проверки запроса.

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

Запросы зависят от времени, поэтому служба (Twitter) проверит, что отметка времени находится в пределах +/- времени. Точное время неизвестно, но служба должна сделать его настолько малым, насколько это возможно.

Вы должны синхронизировать свои системные часы, используя службу времени в Интернете. Вот статья, которую Google предоставил мне для установки времени в Linux: http://www.go2linux.org/how-to-set-the-date-and-time-in-linux

0 голосов
/ 08 октября 2015
  • Перейдите в «Настройки даты и времени»
  • Установите время автоматически на ВКЛ
  • Перезапустите эмулятор

0 голосов
/ 04 мая 2015

Да, советуем проверить / синхронизировать ваши часы. Я пытался сделать то же самое, и я продолжал обновлять системное время (ноутбук / ПК). Через 1 час я заметил, что системное время моего эмулятора не синхронизировано с сервером. Я остановил эмулятор и снова начал. Также вы можете вручную изменить системное время с:

  1. Настройки
  2. Дата и время
  3. Убрать автоматическую дату и время
  4. Установить время

Надеюсь, это кому-нибудь поможет.

Спасибо!

...