android - 如何使用 Twitter4j 在没有用户身份验证的情况下获得 Twitter 公共(public)时间线?

标签 android twitter4j

我写了一些代码允许用户登录到他的 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_TOKENOAUTH_SECRET,并且上面显示的请求不起作用,因为空字符串设置为 ConfigurationBuilder.setOAuthAccessTokenConfigurationBuilder.setOAuthAccessTokenSecret

那么,如果存在的话,获取公共(public)时间线的请求是什么,没有 OAUTH_TOKENOAUTH_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/

相关文章:

android - byte[] 到图像 android

java - 尝试使用 twitter4j 更新状态时出现错误 401

java - twitter4j:搜索 api 未给出最近 7 天的结果

android - 未找到身份验证挑战相关讨论可在 Internet 上找到

android - android PopupWindow 可以显示另一个 PopupWindow 吗?

android - 在 Eclipse 中构建 Android 项目时构建 C++ 共享对象

java - 在 Android 中设置按钮颜色

android - 如何使用 Dagger & Butterknife 设置 Buck?

android twitter retrieveRequestToken 401请求 token

java - 如何使用 twitter4j 删除转推