2012-11-24 92 views
12

如何使用Twitter4j库在公共推文中搜索?Twitter4j:搜索公共推文

public static void main(String[] args) { 
     Twitter twitter = new TwitterFactory().getInstance(); 
     try { 
      Query query = new Query("Cocaine"); 
      QueryResult result; 
      do { 
       result = twitter.search(query); 
       List<Status> tweets = result.getTweets(); 
       for (Status tweet : tweets) { 
        System.out.println("@" + tweet.getUser().getScreenName() + " - " + tweet.getText()); 
       } 
      } while ((query = result.nextQuery()) != null); 
      System.exit(0); 
     } catch (TwitterException te) { 
      te.printStackTrace(); 
      System.out.println("Failed to search tweets: " + te.getMessage()); 
      System.exit(-1); 
     } 
    } 

这给了我Authentication credentials are missing.错误

回答

20

你需要注册你的应用程序的Twitter。如果您拥有自己的私人帐户,则只能这样做。你获得ConsumerKeyConsumerSecretAccessTokenAccessTokenSecret后(他们将呈现给您afret您注册应用程序),最简单的解决方法是更改​​代码以下面的例子:

public static void main(String[] args) { 
    ConfigurationBuilder cb = new ConfigurationBuilder(); 
    cb.setDebugEnabled(true) 
      .setOAuthConsumerKey("yourConsumeKey") 
      .setOAuthConsumerSecret("yourConsumerSecret") 
      .setOAuthAccessToken("yourAccessToken") 
      .setOAuthAccessTokenSecret("yourTokenSecret"); 
    TwitterFactory tf = new TwitterFactory(cb.build()); 
    Twitter twitter = tf.getInstance(); 
     try { 
      Query query = new Query("Cocaine"); 
      QueryResult result; 
      result = twitter.search(query); 
      List<Status> tweets = result.getTweets(); 
      for (Status tweet : tweets) { 
       System.out.println("@" + tweet.getUser().getScreenName() + " - " + tweet.getText()); 
      } 

      System.exit(0); 
     } catch (TwitterException te) { 
      te.printStackTrace(); 
      System.out.println("Failed to search tweets: " + te.getMessage()); 
      System.exit(-1); 
     } 
} 
+0

它的工作原理,谢谢,这正是我一直在寻找的 – zest

3

您需要注册您的应用程序,以获取OAuth认证Consumerkey,consumersecret还的accessToken和Accesstokensecret和配置器类提供这些值。

0

消费密钥对授权程序使用Twitter API,并且访问令牌本质上将您作为您特定的Twitter用户帐户登录