Einführung in Twitter4J

1. Übersicht

In diesem Artikel werden wir uns mit der Verwendung von Twitter4J in einer Java-Anwendung für die Kommunikation mit Twitter befassen.

2. Twitter4J

Twitter4J ist eine Open-Source-Java-Bibliothek, die eine praktische API für den Zugriff auf die Twitter-API bietet.

Einfach ausgedrückt, hier erfahren Sie, wie wir mit der Twitter-API interagieren können. wir können:

  • Poste einen Tweet
  • Holen Sie sich die Zeitleiste eines Benutzers mit einer Liste der neuesten Tweets
  • Senden und Empfangen von Direktnachrichten
  • Suche nach Tweets und vielem mehr

Diese Bibliothek stellt sicher, dass wir diese Vorgänge problemlos ausführen können, und gewährleistet auch die Sicherheit und den Datenschutz eines Benutzers - für den wir natürlich OAuth-Anmeldeinformationen in unserer App konfigurieren müssen.

3. Maven-Abhängigkeiten

Zunächst müssen wir die Abhängigkeit für Twitter4J in unserer pom.xml definieren :

 org.twitter4j twitter4j-stream 4.0.6 

Um zu überprüfen, ob eine neue Version der Bibliothek veröffentlicht wurde, verfolgen Sie die Veröffentlichungen hier.

4. Konfiguration

Die Konfiguration von Twitter4J ist einfach und kann auf verschiedene Arten erfolgen - beispielsweise in einer Nur-Text-Datei oder einer Java-Klasse oder sogar mithilfe von Umgebungsvariablen.

Schauen wir uns jede dieser Möglichkeiten einzeln an.

4.1. Nur-Text-Datei

Wir können eine einfache Textdatei mit dem Namen twitter4j.properties verwenden , um unsere Konfigurationsdetails zu speichern . Schauen wir uns die Eigenschaften an, die bereitgestellt werden müssen:

oauth.consumerKey = // your key oauth.consumerSecret = // your secret oauth.accessToken = // your token oauth.accessTokenSecret = // your token secret

Alle diese Attribute können von der Twitter Developer Console abgerufen werden, nachdem Sie eine neue App erstellt haben.

4.2. Java-Klasse

Wir können auch eine ConfigurationBuilder-Klasse verwenden, um Twitter4J programmgesteuert in Java zu konfigurieren:

ConfigurationBuilder cb = new ConfigurationBuilder(); cb.setDebugEnabled(true) .setOAuthConsumerKey("your consumer key") .setOAuthConsumerSecret("your consumer secret") .setOAuthAccessToken("your access token") .setOAuthAccessTokenSecret("your access token secret"); TwitterFactory tf = new TwitterFactory(cb.build()); Twitter twitter = tf.getInstance();

Beachten Sie, dass wir im nächsten Abschnitt die Twitter- Instanz verwenden werden - wenn wir mit dem Abrufen von Daten beginnen.

4.3. Umgebungsvariablen

Die Konfiguration über Umgebungsvariablen ist eine weitere Möglichkeit. Wenn wir das tun, beachten Sie, dass wir in unseren Variablen ein Twitter4j- Präfix benötigen :

$ export twitter4j.oauth.consumerKey = // your key $ export twitter4j.oauth.consumerSecret = // your secret $ export twitter4j.oauth.accessToken = // your access token $ export twitter4j.oauth.accessTokenSecret = // your access token secret

5. Hinzufügen / Abrufen von Echtzeit-Tweet-Daten

Mit einer vollständig konfigurierten Anwendung können wir endlich mit Twitter interagieren.

Schauen wir uns einige Beispiele an.

5.1. Poste einen Tweet

Wir werden zunächst einen Tweet auf Twitter aktualisieren:

public String createTweet(String tweet) throws TwitterException { Twitter twitter = getTwitterinstance(); Status status = twitter.updateStatus("creating baeldung API"); return status.getText(); }

Mit status.getText () können wir den gerade geposteten Tweet abrufen.

5.2. Holen Sie sich die Timeline

Wir können auch eine Liste von Tweets aus der Zeitleiste des Benutzers abrufen:

public List getTimeLine() throws TwitterException { Twitter twitter = getTwitterinstance(); return twitter.getHomeTimeline().stream() .map(item -> item.getText()) .collect(Collectors.toList()); }

Mit twitter.getHomeTimeline () erhalten wir alle Tweets, die von der aktuellen Konto-ID gepostet werden.

5.3. Eine direkte Nachricht senden

Das Senden und Empfangen einer direkten Nachricht an Follower ist auch über Twitter4j möglich:

public static String sendDirectMessage(String recipientName, String msg) throws TwitterException { Twitter twitter = getTwitterinstance(); DirectMessage message = twitter.sendDirectMessage(recipientName, msg); return message.getText(); }

Die sendDirectMessage- Methode akzeptiert zwei Parameter:

  • Empfängername : Der Twitter-Benutzername eines Nachrichtenempfängers
  • msg : Nachrichteninhalt

Wenn der Empfänger nicht gefunden wird, löst sendDirectMessage eine Ausnahme mit dem Ausnahmecode 150 aus .

5.4. Suche nach Tweets

Wir können auch nach Tweets suchen, die Text enthalten. Auf diese Weise erhalten wir eine Liste von Tweets mit dem Benutzernamen der Benutzer.

Mal sehen, wie eine solche Suche durchgeführt werden kann:

public static List searchtweets() throws TwitterException { Twitter twitter = getTwitterinstance(); Query query = new Query("source:twitter4j baeldung"); QueryResult result = twitter.search(query); return result.getTweets().stream() .map(item -> item.getText()) .collect(Collectors.toList()); }

Natürlich können wir jeden in einem QueryResult empfangenen Tweet durchlaufen und relative Daten abrufen .

5.5. Die Streaming-API

Die Twitter-Streaming-API ist nützlich, wenn Aktualisierungen in Echtzeit erforderlich sind. Es übernimmt die Thread-Erstellung und hört Ereignisse ab.

Erstellen wir einen Listener, der auf Tweet-Updates eines Benutzers hört:

public static void streamFeed() { StatusListener listener = new StatusListener() { @Override public void onException(Exception e) { e.printStackTrace(); } @Override public void onDeletionNotice(StatusDeletionNotice arg) { } @Override public void onScrubGeo(long userId, long upToStatusId) { } @Override public void onStallWarning(StallWarning warning) { } @Override public void onStatus(Status status) { } @Override public void onTrackLimitationNotice(int numberOfLimitedStatuses) { } }; TwitterStream twitterStream = new TwitterStreamFactory().getInstance(); twitterStream.addListener(listener); twitterStream.sample(); }

Wir können eine println () - Anweisung einfügen , um den Ausgabe-Tweet-Stream in allen Methoden zu überprüfen. Allen Tweets sind Standortmetadaten zugeordnet.

Bitte beachten Sie, dass alle von der API abgerufenen Tweets im UTF-8-Format vorliegen. Da Twitter eine mehrsprachige Plattform ist, sind einige Datenformate aufgrund ihrer Herkunft möglicherweise nicht erkennbar.

6. Fazit

Dieser Artikel war eine schnelle, aber umfassende Einführung in die Verwendung von Twitter4J mit Java.

Die Implementierung der gezeigten Beispiele finden Sie auf GitHub - dies ist ein Maven-basiertes Projekt, daher sollte es einfach zu importieren und auszuführen sein, wie es ist. Die einzige Änderung, die wir vornehmen müssen, ist das Einfügen unserer eigenen OAuth-Anmeldeinformationen.