Twitter Stream API用于获取用户的推文

我正在使用twitter流API来获取用户的推文。 我有用户ID列表如何从TwitterStream API获取推文列表。 我分析了以下样本

public class TwitterStreamAPI { public static void main(String[] args) { ConfigurationBuilder cb = new ConfigurationBuilder(); cb.setDebugEnabled(true); cb.setOAuthConsumerKey("xxxx"); cb.setOAuthConsumerSecret("xxx"); cb.setOAuthAccessToken("xxx"); cb.setOAuthAccessTokenSecret("xxx"); TwitterStream twitterStream = new TwitterStreamFactory(cb.build()).getInstance(); UserStreamListener listener = new UserStreamListener() { @Override public void onStatus(Status status) { System.out.println("onStatus @" + status.getUser().getScreenName() + " - " + status.getText()); } @Override public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) { //System.out.println("Got a status deletion notice id:" + statusDeletionNotice.getStatusId()); } @Override public void onDeletionNotice(long directMessageId, long userId) { // System.out.println("Got a direct message deletion notice id:" + directMessageId); } @Override public void onTrackLimitationNotice(int numberOfLimitedStatuses) { // System.out.println("Got a track limitation notice:" + numberOfLimitedStatuses); } @Override public void onScrubGeo(long userId, long upToStatusId) { // System.out.println("Got scrub_geo event userId:" + userId + " upToStatusId:" + upToStatusId); } @Override public void onStallWarning(StallWarning warning) { // System.out.println("Got stall warning:" + warning); } @Override public void onFriendList(long[] friendIds) { /*System.out.print("onFriendList"); for (long friendId : friendIds) { System.out.print(" " + friendId); } System.out.println();*/ } @Override public void onFavorite(User source, User target, Status favoritedStatus) { /* System.out.println("onFavorite source:@" + source.getScreenName() + " target:@" + target.getScreenName() + " @" + favoritedStatus.getUser().getScreenName() + " - " + favoritedStatus.getText());*/ } @Override public void onUnfavorite(User source, User target, Status unfavoritedStatus) { /*System.out.println("onUnFavorite source:@" + source.getScreenName() + " target:@" + target.getScreenName() + " @" + unfavoritedStatus.getUser().getScreenName() + " - " + unfavoritedStatus.getText());*/ } @Override public void onFollow(User source, User followedUser) { /*System.out.println("onFollow source:@" + source.getScreenName() + " target:@" + followedUser.getScreenName());*/ } @Override public void onDirectMessage(DirectMessage directMessage) { /* System.out.println("onDirectMessage text:" + directMessage.getText());*/ } @Override public void onUserListMemberAddition(User addedMember, User listOwner, UserList list) { /*System.out.println("onUserListMemberAddition added member:@" + addedMember.getScreenName() + " listOwner:@" + listOwner.getScreenName() + " list:" + list.getName());*/ } @Override public void onUserListMemberDeletion(User deletedMember, User listOwner, UserList list) { /* System.out.println("onUserListMemberDeleted deleted member:@" + deletedMember.getScreenName() + " listOwner:@" + listOwner.getScreenName() + " list:" + list.getName());*/ } @Override public void onUserListSubscription(User subscriber, User listOwner, UserList list) { /*System.out.println("onUserListSubscribed subscriber:@" + subscriber.getScreenName() + " listOwner:@" + listOwner.getScreenName() + " list:" + list.getName());*/ } @Override public void onUserListUnsubscription(User subscriber, User listOwner, UserList list) { /*System.out.println("onUserListUnsubscribed subscriber:@" + subscriber.getScreenName() + " listOwner:@" + listOwner.getScreenName() + " list:" + list.getName());*/ } @Override public void onUserListCreation(User listOwner, UserList list) { /*System.out.println("onUserListCreated listOwner:@" + listOwner.getScreenName() + " list:" + list.getName());*/ } @Override public void onUserListUpdate(User listOwner, UserList list) { /*System.out.println("onUserListUpdated listOwner:@" + listOwner.getScreenName() + " list:" + list.getName());*/ } @Override public void onUserListDeletion(User listOwner, UserList list) { /*System.out.println("onUserListDestroyed listOwner:@" + listOwner.getScreenName() + " list:" + list.getName());*/ } @Override public void onUserProfileUpdate(User updatedUser) { //System.out.println("onUserProfileUpdated user:@" + updatedUser.getScreenName()); } @Override public void onBlock(User source, User blockedUser) { /*System.out.println("onBlock source:@" + source.getScreenName() + " target:@" + blockedUser.getScreenName());*/ } @Override public void onUnblock(User source, User unblockedUser) { /*System.out.println("onUnblock source:@" + source.getScreenName() + " target:@" + unblockedUser.getScreenName());*/ } @Override public void onException(Exception ex) { /* ex.printStackTrace(); System.out.println("onException:" + ex.getMessage());*/ } }; String useIds[] = {"99901654"}; twitterStream.addListener(listener); twitterStream.user(useIds); } } 

https://github.com/yusuke/twitter4j/blob/master/twitter4j-examples/src/main/java/twitter4j/examples/stream/PrintUserStream.java

但它不打印状态

流式传输api为您提供实时事件,因此如果在您收听期间没有任何用户推文,您将看不到任何输出。

如果您正在尝试获取用户历史推文,请考虑使用Twitter#getUserTimeline(screenName) ,例如:

 final Twitter twitter = new TwitterFactory().getInstance(); final List statuses = twitter.getUserTimeline(screenName); for (Status status : statuses) { System.out.println("@" + status.getUser().getScreenName() + " - " + status.getText()); } 

有关详细信息,请参阅此示例 。

我在这里详细回答了同样的问题 。 请检查一下。 这将向您展示如何使用所需的访问令牌来阅读和更新Twitter。

简而言之,这些是步骤

  1. 在https://apps.twitter.com/app/new上创建Twitter应用程序并获取您的消费者密钥。 (如果你碰到某个地方,请按照上面提到的博客。)
  2. 使用Twitter4j API获取授权URL,点击它并获取PIN。 (所需的代码在下面提到您的参考)
  3. 输入引脚并获取访问权限(参见下面的代码)
  4. 现在我们可以阅读或更新Twitter提要了。 (基于您在创建Twitter应用程序时设置的访问级别)

请在此处查看示例代码。 https://stackoverflow.com/a/40691881/2405670