我写了一些代码允许用户登录到他的 Twitter 帐户并使用 Twitter4j 发送推文并关注 this tutorial .
现在我也可以获取公众号的推文了
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setHttpConnectionTimeout(10000)
.setHttpReadTimeout(10000)
.setOAuthConsumerKey(Config.TWITTER_CONSUMER_KEY)
.setOAuthConsumerSecret(Config.TWITTER_CONSUMER_SECRET)
.setOAuthAccessToken(Utils.getPrefsString(getActivity(),
TwitterPrefsFragment.PREF_KEY_OAUTH_TOKEN, "")) // empty if not authentified
.setOAuthAccessTokenSecret(Utils.getPrefsString(getActivity(),
TwitterPrefsFragment.PREF_KEY_OAUTH_SECRET, "")); // empty if not authentified
TwitterFactory tf = new TwitterFactory(cb.build());
Twitter twitter = tf.getInstance();
List<twitter4j.Status> statuses = twitter.getUserTimeline(SOME_PUBLIC_TWITTER_ACCOUNT, new Paging(1, 50));
但这仅在用户通过身份验证并且应用在首选项中具有 oauth token 和 secret 时才有效..
如何在没有访问 token 的情况下获得 Twitter 公共(public)时间线,即无需用户进行身份验证?
编辑
我正在重新表述我的问题以使其更清楚:
我设法使用给定的代码验证了我的 Twitter 应用程序和用户 here .
现在,如果用户未登录,我如何获得公共(public)时间线?在那种情况下,没有 OAUTH_TOKEN
和 OAUTH_SECRET
,并且上面显示的请求不起作用,因为空字符串设置为 ConfigurationBuilder.setOAuthAccessToken
和 ConfigurationBuilder.setOAuthAccessTokenSecret
。
那么,如果存在的话,获取公共(public)时间线的请求是什么,没有 OAUTH_TOKEN
和 OAUTH_SECRET
?
最佳答案
在您的情况下,您应该使用 Application-only authentication .
要使用 Twitter4J 做到这一点,请尝试以下代码
ConfigurationBuilder cb = new ConfigurationBuilder();
cb
.setOAuthConsumerKey(<YOUR_CONSUMER_KEY>)
.setOAuthConsumerSecret(<YOUR_CONSUMER_SECRET>)
.setApplicationOnlyAuthEnabled(true); // IMPORTANT: set T4J to use App-only auth
TwitterFactory tf = new TwitterFactory(cb.build());
Twitter twitter = tf.getInstance();
OAuth2Token token = twitter.getOAuth2Token();
if (token != null) {
System.out.println("Token Type : " + token.getTokenType());
System.out.println("Access Token: " + token.getAccessToken());
}
ResponseList<Status> list = twitter.getUserTimeline(783214); // Load @twitter's timeline without user login.
上述示例代码的要点:
- 调用
setApplicationOnlyAuthEnabled(true)
以启用仅应用程序身份验证。 - 使用
getOAuth2Token()
而不是getOAuthAccessToken()
获取访问 token
关于android - 如何使用 Twitter4j 在没有用户身份验证的情况下获得 Twitter 公共(public)时间线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18669217/