Introductie tot Twitter4J

1. Overzicht

In dit artikel zullen we kijken naar het gebruik van Twitter4J in een Java-applicatie om met Twitter te communiceren.

2. Twitter4J

Twitter4J is een open source Java-bibliotheek, die een handige API biedt voor toegang tot de Twitter API.

Simpel gezegd, hier is hoe we kunnen communiceren met de Twitter API; wij kunnen:

  • Plaats een tweet
  • Krijg een tijdlijn van een gebruiker, met een lijst met de laatste tweets
  • Directe berichten verzenden en ontvangen
  • Zoek naar tweets en nog veel meer

Deze bibliotheek zorgt ervoor dat we deze bewerkingen gemakkelijk kunnen uitvoeren, en het zorgt ook voor de veiligheid en privacy van een gebruiker - waarvoor we natuurlijk OAuth-inloggegevens in onze app moeten hebben geconfigureerd.

3. Maven afhankelijkheden

We moeten beginnen met het definiëren van de afhankelijkheid voor Twitter4J in ons pom.xml:

 org.twitter4j twitter4j-stream 4.0.6 

Als u wilt controleren of er een nieuwe versie van de bibliotheek is uitgebracht, kunt u de releases hier volgen.

4. Configuratie

Het configureren van Twitter4J is eenvoudig en kan op verschillende manieren worden gedaan - bijvoorbeeld in een gewoon tekstbestand of een Java-klasse of zelfs met omgevingsvariabelen.

Laten we elk van deze manieren een voor een bekijken.

4.1. Bestand met platte tekst

We kunnen een gewoon tekstbestand gebruiken met de naam twitter4j.eigenschappen - om onze configuratiegegevens te bewaren. Laten we eens kijken naar de eigenschappen die moeten worden verstrekt:

oauth.consumerKey = // uw sleutel oauth.consumerSecret = // uw geheim oauth.accessToken = // uw token oauth.accessTokenSecret = // uw tokengeheim

Al deze kenmerken kunnen worden verkregen via de Twitter Developer-console nadat u een nieuwe app hebt gemaakt.

4.2. Java-klasse

We kunnen ook een ConfigurationBuilder-klasse gebruiken om Twitter4J programmatisch in Java te configureren:

ConfigurationBuilder cb = nieuwe ConfigurationBuilder (); cb.setDebugEnabled (true) .setOAuthConsumerKey ("uw gebruikerssleutel") .setOAuthConsumerSecret ("uw gebruikersgeheim") .setOAuthAccessToken ("uw toegangstoken") .setOAuthAccessTokenSecret ("uw toegangstokengeheim"); TwitterFactory tf = nieuwe TwitterFactory (cb.build ()); Twitter twitter = tf.getInstance ();

Merk op dat we de Twitter voorbeeld in de volgende sectie - wanneer we beginnen met het ophalen van gegevens.

4.3. Omgevingsvariabelen

Configureren via omgevingsvariabelen is een andere keuze die we hebben. Als we dat doen, houd er dan rekening mee dat we een twitter4j prefix in onze variabelen:

$ export twitter4j.oauth.consumerKey = // jouw sleutel $ export twitter4j.oauth.consumerSecret = // jouw geheime $ export twitter4j.oauth.accessToken = // jouw toegangstoken $ export twitter4j.oauth.accessTokenSecret = // jouw toegangstoken geheim

5. Toevoegen / ophalen van realtime tweetgegevens

Met een volledig geconfigureerde applicatie kunnen we eindelijk communiceren met Twitter.

Laten we een paar voorbeelden bekijken.

5.1. Plaats een Tweet

We beginnen met het bijwerken van een tweet op Twitter:

public String createTweet (String tweet) gooit TwitterException {Twitter twitter = getTwitterinstance (); Status status = twitter.updateStatus ("baeldung API maken"); terugkeer status.getText (); }

Door het gebruiken van status.getText (), we kunnen de zojuist geposte tweet ophalen.

5.2. Verkrijg de tijdlijn

We kunnen ook een lijst met tweets ophalen van de tijdlijn van de gebruiker:

openbare lijst getTimeLine () gooit TwitterException {Twitter twitter = getTwitterinstance (); retourneer twitter.getHomeTimeline (). stream () .map (item -> item.getText ()) .collect (Collectors.toList ()); }

Door het gebruiken van twitter.getHomeTimeline (), we krijgen alle tweets gepost door de huidige account-ID.

5.3. Stuur een direct bericht

Het verzenden en ontvangen van een direct bericht naar volgers is ook mogelijk met behulp van de Twitter4j:

openbare statische String sendDirectMessage (String recipientName, String msg) gooit TwitterException {Twitter twitter = getTwitterinstance (); DirectMessage-bericht = twitter.sendDirectMessage (recipientName, msg); terug message.getText (); }

De sendDirectMessage methode heeft twee parameters:

  • Naam ontvanger: de twitter-gebruikersnaam van een berichtontvanger
  • msg: berichtinhoud

Als de ontvanger niet wordt gevonden, wordt het sendDirectMessage zal een uitzondering met uitzonderingscode genereren 150.

5.4. Zoek naar tweets

We kunnen ook zoeken naar tweets met wat tekst. Door dit te doen, krijgen we een lijst met tweets met de gebruikersnaam van gebruikers.

Laten we eens kijken hoe een dergelijke zoekopdracht kan worden uitgevoerd:

openbare statische lijst searchtweets () gooit TwitterException {Twitter twitter = getTwitterinstance (); Zoekopdracht = nieuwe zoekopdracht ("bron: twitter4j baeldung"); QueryResult resultaat = twitter.search (query); return result.getTweets (). stream () .map (item -> item.getText ()) .collect (Collectors.toList ()); }

Het is duidelijk dat we elke tweet die in een QueryResult en haal relatieve gegevens op.

5.5. De streaming-API

Twitter Streaming API is handig wanneer updates in realtime nodig zijn; het behandelt het maken van threads en luistert naar evenementen.

Laten we een luisteraar maken die luistert naar updates van een gebruiker op tweets:

public static void streamFeed () {StatusListener listener = nieuwe StatusListener () {@Override public void onException (uitzondering e) {e.printStackTrace (); } @Override public void onDeletionNotice (StatusDeletionNotice arg) {} @Override public void onScrubGeo (long userId, long upToStatusId) {} ​​@Override public void onStallWarning (StallWarning-waarschuwing) {} @Override public void onStatus (Status @Override) { openbare void onTrackLimitationNotice (int numberOfLimitedStatuses) {}}; TwitterStream twitterStream = nieuwe TwitterStreamFactory (). GetInstance (); twitterStream.addListener (luisteraar); twitterStream.sample (); }

We kunnen er wat zetten println () instructie om de output tweet-stream in alle methoden te controleren. Aan alle tweets zijn locatiemetagegevens gekoppeld.

Houd er rekening mee dat alle tweets-gegevens die door de API worden opgehaald, in het UTF-8-formaat zijn en aangezien Twitter een meertalig platform is, kan sommige gegevensindeling onherkenbaar zijn op basis van de oorsprong.

6. Conclusie

Dit artikel was een snelle maar uitgebreide inleiding tot het gebruik van Twitter4J met Java.

De implementatie van de getoonde voorbeelden is te vinden op GitHub - dit is een op Maven gebaseerd project, dus het moet gemakkelijk te importeren en uit te voeren zijn zoals het is. De enige wijziging die we moeten doen, is onze eigen OAuth-inloggegevens invoegen.