Ошибка аутентификации Twitter 401 (не синхронизирует ли Thread.sleep () мои часы)

#twitter #clock #synchronizing

#Twitter #часы #синхронизация

Вопрос:

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

 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 запрашивает подписчиков у пользователя, чей твит защищен. Это как-то связано с этим?

Ответ №1:

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

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

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

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

Ответ №2:

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

  1. Настройки
  2. Дата и время
  3. Снимите флажок с автоматической даты и времени
  4. Установленное время

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

Спасибо!

Ответ №3:

  • Пожалуйста, перейдите в раздел «Настройки даты и времени»
  • Автоматически установите время на ВКЛ.
  • Перезагрузите свой эмулятор