我尝试使用Twitter4J库中的getUserTimeline()下载公用推文,它仅在某些帐户上有效。例如:
twitter.getUserTimeline("twitter"); //works
twitter.getUserTimeline("codeacademy"); //fails
但是,我找不到两者之间的任何区别。我没有一个人跟随,也没有一个人跟随。如果我以Firefox的私有模式访问他们的帐户,则可以看到他们的公开推文。使用我的帐户登录时是相同的。但是,如果我尝试使用API,则codeacademy会以某种方式失败。我尝试使用参数“codeacademy”,“Codeacademy”来调用它,即使ID为(716547158),也总是得到相同的结果。
我收到的错误消息是:
Exception in thread "main" 401:Authentication credentials (https://dev.twitter.com/pages/auth) were missing or incorrect. Ensure that you have set valid consumer key/secret, access token/secret, and the system clock is in sync.
{"request":"\/1.1\/statuses\/user_timeline.json?screen_name=codeacademy&include_my_retweet=true&include_entities=1&include_rts=1","error":"Not authorized."}
Relevant discussions can be found on the Internet at:
http://www.google.co.jp/search?q=00df323f or
http://www.google.co.jp/search?q=445fb8e5
TwitterException{exceptionCode=[00df323f-445fb8e5], statusCode=401, message=null, code=-1, retryAfter=-1, rateLimitStatus=RateLimitStatusJSONImpl{remaining=177, limit=180, resetTimeInSeconds=1384522960, secondsUntilReset=495}, version=3.0.4}
at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:162)
at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:61)
at twitter4j.internal.http.HttpClientWrapper.get(HttpClientWrapper.java:81)
...etc...
我以为我可能是错误地初始化了Twitter对象,但是尝试3个不同的选项并没有帮助。这是我尝试过的。
1)
在twitter4j.properties中(*是实际值:))
oauth.consumerKey=***
oauth.consumerSecret=***
oauth.accessToken=***
oauth.accessTokenSecret=***
在java中
Twitter twitter = TwitterFactory.getSingleton();
2)
在twitter4j.properties中
enableApplicationOnlyAuth=true
http.useSSL=true
oauth.consumerKey=***
oauth.consumerSecret=***
oauth2.tokenType=bearer
oauth2.accessToken=***
我通过调用以下命令并手动复制粘贴来获取oauth2值:
OAuth2Token token = twitter.getOAuth2Token();
System.out.println(token.getAccessToken());
System.out.println(token.getTokenType());
在java中
Twitter twitter = new TwitterFactory().getSingleton();
3)
在twitter4j.properties中
*nothing*
在java中
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.setUseSSL(true);
builder.setApplicationOnlyAuthEnabled(true);
Twitter twitter = new TwitterFactory(builder.build()).getInstance();
twitter.setOAuthConsumer("***", "***");
OAuth2Token token = twitter.getOAuth2Token();
每次尝试都使用Twitter,但没有尝试使用codeacademy。
我一定在做错事,但无法找出原因。任何建议将不胜感激:)。谢谢。
最佳答案
当您去这里时:https://twitter.com/codeacademy
它写在页面本身上,表明该用户的推文受到保护,只有关注者有权访问该帐户的推文。
因此,您可以获得这些推文: