在发布这些问题之前,我已经做了很多考虑。关于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要求来自用户推文受到保护的关注者的时间。是与它有关吗?
答案 0 :(得分:1)
同步时钟的建议是因为请求有一个时间戳,用于在生成用于验证请求的签名时为哈希算法设定种子。
签名特定于正在进行的请求,制作请求的人,制作它的应用程序,制作时以及其他随机值。
请求对时间敏感,因此服务(Twitter)将检查时间戳是否在+/-时间内。准确的时间是未知的,但服务应该尽可能小。
您应该使用互联网时间服务同步系统时钟。以下是Google为我提供的关于在linux中设置时间的文章:http://www.go2linux.org/how-to-set-the-date-and-time-in-linux
答案 1 :(得分:0)
是的,建议是检查/同步你的时钟。我试着这样做,我不断更新我的系统时间(笔记本电脑/ PC)。在1Hour之后,我注意到我的模拟器的系统时间与服务器没有同步。我停止了模拟器并再次启动它工作。您也可以手动更改系统时间:
希望这有助于某人。
谢谢!
答案 2 :(得分:0)