android – 如何使用Twitter4j获取没有用户身份验证的Twitter公共时间线?

前端之家收集整理的这篇文章主要介绍了android – 如何使用Twitter4j获取没有用户身份验证的Twitter公共时间线?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我写了一些代码,允许用户登录他的Twitter帐户并使用Twitter4j和 this tutorial发送Tweet.

现在我也可以使用公共帐户的推文

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令牌和机密时才有效.

如何获得没有访问令牌的Twitter公共时间线,即无需用户进行身份验证?

编辑

我正在重新提出我的问题以使其更清楚:

我设法验证我的Twitter应用程序和用户代码here.

现在,如果用户登录,我如何获得公共时间表?在这种情况下,没有OAUTH_TOKEN和OAUTH_SECRET,并且上面显示的请求不起作用,因为空字符串设置为ConfigurationBuilder.setOAuthAccessToken和ConfigurationBuilder.setOAuthAccessTokenSecret.

那么,如果它存在,那么获取公共时间线的请求是什么,没有OAUTH_TOKEN和OAUTH_SECRET?

解决方法

这当然是可能的,我已经尝试过了.如果您的疑问只是关于访问令牌和访问令牌秘密是空的,那么您应该尝试使用应用页面中提供的访问令牌.通过应用页面我的意思是,您已经注册了您的Twitter应用程序的链接.

如果您转到dev.twitter.com并转到您的应用设置,您可以看到消费者密钥,消费者密钥,访问令牌和访问令牌密钥.利用这些并遵循我的下面的代码,它应该工作,

ConfigurationBuilder cb = new ConfigurationBuilder();
        cb.setDebugEnabled(true)
                .setOAuthConsumerKey("B*************Q")
                .setOAuthConsumerSecret(
                        "l*************o")
                .setOAuthAccessToken(
                        "1*************s")
                .setOAuthAccessTokenSecret(
                        "s*************s");
        TwitterFactory tf = new TwitterFactory(cb.build());
        twitter = tf.getInstance();
        try {
            List<Status> statuses;
            String user;
            user = "Replace this with the screen name whose Feeds you want to fetch";
            statuses = twitter.getUserTimeline(user);
            Log.i("Status Count",statuses.size() + " Feeds");

        } catch (TwitterException te) {
            te.printStackTrace();
        }

我使用了twitter 4j 3.03.jar.

猜你在找的Android相关文章