我写了一些代码,允许用户登录他的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.