【问题标题】:how to get the user's timeline of one's own twitter account through twitter api in java如何通过java中的twitter api获取用户自己twitter帐户的时间线
【发布时间】:2015-03-11 03:50:15
【问题描述】:

我一直试图通过 http://www.dreamincode.net/forums/blog/114/entry-4459-demo-of-twitter-application-only-oauth-authentication-using-java 博客中解释的一些 Java 代码获取我的时间线消息,并用 Java 编写了一些代码。

我正在使用仅限应用程序的身份验证并使用消费者密钥和消费者秘密。这是我请求不记名令牌的代码的一部分:

bearerToken=requestBearerToken("https://api.twitter.com/1.1/statuses/besra_u_timeline.json");

这是正确的方法吗?我问是因为在 requestBearerToken 方法中

private static String requestBearerToken(String endPointUrl) throws IOException {

            HttpsURLConnection connection = null;                                                          

            URL url = new URL(endPointUrl);

            connection = (HttpsURLConnection) url.openConnection(); 
            try {
                 connection.getInputStream();

            } catch(IOException e){
                System.out.println("IOException");
            }

我不断收到 IOException,这意味着我没有从连接对象获取输入流。请帮我获取推文。

【问题讨论】:

    标签: twitter


    【解决方案1】:

    是的,我有一种方法可以使用 twitter4j api.Consumer 密钥、消费者密钥、访问令牌和访问密钥,一旦你在 dev.twitter.com/apps 中注册你的应用程序,你就可以获得

    import twitter4j.ResponseList;
    import twitter4j.Status;
    import twitter4j.Twitter;
    import twitter4j.Status;
    import twitter4j.TwitterException;
    import twitter4j.TwitterFactory;
    import twitter4j.conf.ConfigurationBuilder;
    
    public class SimpleCrawler {
    
        static ResponseList<Status> statuses;                      
        public static void main(String[] args) throws TwitterException {               
            ConfigurationBuilder cb=new ConfigurationBuilder();                              
            cb.setDebugEnabled(true)
                    .setOAuthConsumerKey("your consumer key")
                    .setOAuthConsumerSecret("your con secret")
                    .setOAuthAccessToken("your access token")
                    .setOAuthAccessTokenSecret("access token secret");
            TwitterFactory tf=new TwitterFactory(cb.build());        
            Twitter tw = tf.getInstance();                
            try {
                statuses=tw.getHomeTimeline();
                System.out.println("Connected to twitter");
            } catch (TwitterException e) {
                System.out.println("Cannot connect to Twitter");
                System.exit(0);
            }              
            System.out.println("Reading TimeLine...");                       
            for(Status st1:statuses){                                                
               String data[]={st1.getUser().getName(),String.valueOf(st1.getCreatedAt()),twtmsg};                 
               System.out.println(data);
             }                                               
        }
    
    }
    

    通过 twitter api 也是可能的,但不知道。这种方法的一个问题是它一次只能获取 20 条推文,任何帮助都将不胜感激。欢迎提出建议。

    【讨论】:

      【解决方案2】:

      你需要使用分页:

       Paging paging = new Paging();
       paging.setPage(1);
       ResponseList<Status> statuses = twitter.getHomeTimeline(paging);
       System.out.println(statuses.size());
       paging.setPage(2);
       statuses.addAll(twitter.getHomeTimeline(paging));
       System.out.println(statuses.size());
      

      上面的简化代码会给你两页价值statuses

      【讨论】:

      • 谢谢@Tony Kennah。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-22
      • 2017-07-02
      • 2013-06-13
      • 1970-01-01
      • 2012-12-12
      • 2019-03-28
      • 2015-11-22
      相关资源
      最近更新 更多