Introduktion til Twitter4J
1. Oversigt
I denne artikel vil vi se på brugen af Twitter4J i en Java-applikation til at kommunikere med Twitter.
2. Twitter4J
Twitter4J er et open source Java-bibliotek, som giver en praktisk API til adgang til Twitter API.
Kort sagt, her er hvordan vi kan interagere med Twitter API; vi kan:
- Send et tweet
- Få tidslinje for en bruger med en liste over nyeste tweets
- Send og modtag direkte beskeder
- Søg efter tweets og meget mere
Dette bibliotek sikrer, at vi nemt kan udføre disse operationer, og det sikrer også en brugers sikkerhed og privatliv - som vi naturligvis har brug for at have OAuth-legitimationsoplysninger konfigureret i vores app.
3. Maven-afhængigheder
Vi er nødt til at starte med at definere afhængigheden af Twitter4J i vores pom.xml:
org.twitter4j twitter4j-stream 4.0.6
For at kontrollere om der er frigivet en ny version af biblioteket - følg udgivelserne her.
4. Konfiguration
Det er let at konfigurere Twitter4J og kan gøres på forskellige måder - for eksempel i en almindelig tekstfil eller en Java-klasse eller endda ved hjælp af miljøvariabler.
Lad os se på hver af disse måder, en ad gangen.
4.1. Almindelig tekstfil
Vi kan bruge en almindelig tekstfil - navngivet twitter4j.egenskaber - at holde vores konfigurationsoplysninger. Lad os se på de egenskaber, der skal leveres:
oauth.consumerKey = // din nøgle oauth.consumerSecret = // din hemmelige oauth.accessToken = // dit token oauth.accessTokenSecret = // din tokenhemmelighed
Alle disse attributter kan fås fra Twitter Developer Console, når du opretter en ny app.
4.2. Java-klasse
Vi kan også bruge en ConfigurationBuilder-klasse til at konfigurere Twitter4J programmatisk i Java:
ConfigurationBuilder cb = ny ConfigurationBuilder (); cb.setDebugEnabled (true) .setOAuthConsumerKey ("din forbrugernøgle") .setOAuthConsumerSecret ("din forbrugerhemmelighed") .setOAuthAccessToken ("dit adgangstoken") .setOAuthAccessTokenSecret ("din adgangstokenhemmelighed"); TwitterFactory tf = ny TwitterFactory (cb.build ()); Twitter twitter = tf.getInstance ();
Bemærk, at vi bruger Twitter eksempel i næste afsnit - når vi begynder at hente data.
4.3. miljøvariabler
Konfiguration gennem miljøvariabler er et andet valg, vi har. Hvis vi gør det, skal du bemærke, at vi har brug for en twitter4j præfiks i vores variabler:
$ eksport twitter4j.oauth.consumerKey = // din nøgle $ eksport twitter4j.oauth.consumerSecret = // din hemmelige $ eksport twitter4j.oauth.accessToken = // dit adgangstoken $ export twitter4j.oauth.accessTokenSecret = // dit adgangstoken hemmelighed
5. Tilføjelse / hentning af Tweet-data i realtid
Med en fuldt konfigureret applikation kan vi endelig interagere med Twitter.
Lad os se på nogle få eksempler.
5.1. Send et Tweet
Vi starter med at opdatere en tweet på Twitter:
offentlig String createTweet (String tweet) kaster TwitterException {Twitter twitter = getTwitterinstance (); Status status = twitter.updateStatus ("opretter baeldung API"); return status.getText (); }
Ved hjælp af status.getText (), vi kan hente den netop indsendte tweet.
5.2. Få tidslinjen
Vi kan også hente en liste over tweets fra brugerens tidslinje:
offentlig liste getTimeLine () kaster TwitterException {Twitter twitter = getTwitterinstance (); returner twitter.getHomeTimeline (). stream () .map (item -> item.getText ()) .collect (Collectors.toList ()); }
Ved hjælp af twitter.getHomeTimeline (), vi får alle tweets sendt efter det aktuelle konto-id.
5.3. Send en direkte besked
At sende og modtage en direkte besked til tilhængere er også mulig ved hjælp af Twitter4j:
offentlig statisk String sendDirectMessage (String recipientName, String msg) kaster TwitterException {Twitter twitter = getTwitterinstance (); DirectMessage-meddelelse = twitter.sendDirectMessage (modtagernavn, msg); returner besked.getText (); }
Det sendDirectMessage metoden tager to parametre:
- Navn på modtager: twitter-brugernavnet på en meddelelsesmodtager
- msg: beskedindhold
Hvis modtageren ikke findes, vises sendDirectMessage kaster en undtagelse med undtagelseskode 150.
5.4. Søg efter tweets
Vi kan også søge efter tweets, der indeholder noget tekst. Ved at gøre dette får vi en liste over tweets med brugernavnet på brugerne.
Lad os se, hvordan en sådan søgning kan udføres:
offentlig statisk liste searchtweets () kaster TwitterException {Twitter twitter = getTwitterinstance (); Forespørgsel = ny forespørgsel ("kilde: twitter4j baeldung"); QueryResult resultat = twitter.search (forespørgsel); return result.getTweets (). stream () .map (item -> item.getText ()) .collect (Collectors.toList ()); }
Det er klart, at vi kan gentage hver tweet modtaget i en QueryResult og hente relative data.
5.5. Streaming API
Twitter Streaming API er nyttigt, når opdateringer er påkrævet i realtid; det håndterer oprettelse af tråde og lytter til begivenheder.
Lad os oprette en lytter, der lytter til tweetopdateringer fra en bruger:
offentlig statisk ugyldig streamFeed () {StatusListener-lytter = ny StatusListener () {@Override offentlig ugyldighed påUndtagelse (undtagelse e) {e.printStackTrace (); } @Override offentligt ugyldigt onDeletionNotice (StatusDeletionNotice arg) {} @Override public void onScrubGeo (long userId, long upToStatusId) {} @Override public void onStallWarning (StallWarning warning) {} @Override public void onStatus) offentlig ugyldighed onTrackLimitationNotice (int numberOfLimitedStatuses) {}}; TwitterStream twitterStream = ny TwitterStreamFactory (). GetInstance (); twitterStream.addListener (lytter); twitterStream.sample (); }
Vi kan sætte nogle println () erklæring for at kontrollere output-tweet-strømmen i alle metoderne. Alle tweets har placeringsmetadata tilknyttet.
Bemærk, at alle tweetsdata, der er hentet af API'et, er i UTF-8-format, og da Twitter er en flersproget platform, kan noget dataformat muligvis ikke genkendes baseret på dets oprindelse.
6. Konklusion
Denne artikel var en hurtig, men omfattende introduktion til brugen af Twitter4J med Java.
Implementeringen af de viste eksempler kan findes på GitHub - dette er et Maven-baseret projekt, så det skal være let at importere og køre som det er. Den eneste ændring, vi skal gøre, er at indsætte vores egne OAuth-legitimationsoplysninger.