Twitter Stream API для получения твитов пользователей

Я использую twitter stream API для получения твитов от пользователя. У меня есть список ID пользователя. Как получить список твитов из API TwitterStream. Я проанализировал следующий образец

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

но он не печатает статус

Потоковая apis предоставляет вам события в реальном времени, поэтому, если ни один из пользователей Tweet в то время, когда вы слушаете, вы не увидите никакого выхода.

Если вы вместо этого пытаетесь получить исторические твиты пользователей, Twitter#getUserTimeline(screenName) вместо этого использовать 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()); } 

См. Этот пример для получения дополнительной информации.

Я ответил на это подробно. Пожалуйста, проверьте это. Это покажет вам, как мы можем читать и обновлять твиттер, используя необходимые токены доступа.

вкратце: это шаги

  1. Закрепите приложение Twitter на https://apps.twitter.com/app/new и получите свой потребительский ключ. (Следуйте за упомянутым блогом, если вы где-то ударились).
  2. Используя API Twitter4j, получите URL авторизации, нажмите его и получите ПИН-код. (Необходимый код указан ниже для вашего ref)
  3. Введите вывод и получите доступ к окну (см. Ниже код)
  4. Вот и все, теперь мы можем читать или обновлять твиттер-каналы. (На основе уровня доступа, который вы устанавливаете при создании приложения Twitter)

Пожалуйста, проверьте здесь пример кода. https://stackoverflow.com/a/40691881/2405670