Twitter 401身份验证错误(Thread.sleep()是否取消了我的时钟)

时间:2011-10-22 10:05:16

标签: twitter clock synchronizing

在发布这些问题之前,我已经做了很多考虑。关于TwitterTwitter4j 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要求来自用户推文受到保护的关注者的时间。是与它有关吗?

3 个答案:

答案 0 :(得分:1)

同步时钟的建议是因为请求有一个时间戳,用于在生成用于验证请求的签名时为哈希算法设定种子。

签名特定于正在进行的请求,制作请求的人,制作它的应用程序,制作时以及其他随机值。

请求对时间敏感,因此服务(Twitter)将检查时间戳是否在+/-时间内。准确的时间是未知的,但服务应该尽可能小。

您应该使用互联网时间服务同步系统时钟。以下是Google为我提供的关于在linux中设置时间的文章:http://www.go2linux.org/how-to-set-the-date-and-time-in-linux

答案 1 :(得分:0)

是的,建议是检查/同步你的时钟。我试着这样做,我不断更新我的系统时间(笔记本电脑/ PC)。在1Hour之后,我注意到我的模拟器的系统时间与服务器没有同步。我停止了模拟器并再次启动它工作。您也可以手动更改系统时间:

  1. 设置
  2. 日期和时间
  3. 解开自动日期和时间
  4. 设定时间
  5. 希望这有助于某人。

    谢谢!

答案 2 :(得分:0)

  • 请转到“日期和时间设置”
  • 自动将时间设为开启
  • 重启你的模拟器