Introduksjon til Twitter4J

1. Oversikt

I denne artikkelen vil vi se på bruk av Twitter4J i et Java-program for å kommunisere med Twitter.

2. Twitter4J

Twitter4J er et open source Java-bibliotek, som gir et praktisk API for tilgang til Twitter API.

Enkelt sagt, her er hvordan vi kan samhandle med Twitter API; vi kan:

  • Legg ut en tweet
  • Få en tidslinje for en bruker med en liste over de siste tweets
  • Send og motta direktemeldinger
  • Søk etter tweets og mye mer

Dette biblioteket sørger for at vi enkelt kan utføre disse operasjonene, og det sikrer også sikkerheten og personvernet til en bruker - som vi naturlig nok trenger å ha konfigurert OAuth-legitimasjon i appen vår.

3. Maven-avhengigheter

Vi må begynne med å definere avhengigheten for Twitter4J i vår pom.xml:

 org.twitter4j twitter4j-stream 4.0.6 

For å sjekke om noen ny versjon av biblioteket er utgitt - spor utgivelsene her.

4. Konfigurasjon

Å konfigurere Twitter4J er enkelt og kan gjøres på forskjellige måter - for eksempel i en vanlig tekstfil eller en Java-klasse eller til og med ved hjelp av miljøvariabler.

La oss se på hver av disse måtene, en om gangen.

4.1. Vanlig tekstfil

Vi kan bruke en ren tekstfil - med navnet twitter4j.egenskaper - for å beholde konfigurasjonsdetaljene våre. La oss se på egenskapene som må leveres:

oauth.consumerKey = // din nøkkel oauth.consumerSecret = // din hemmelige oauth.accessToken = // din token oauth.accessTokenSecret = // din tokenhemmelighet

Alle disse attributtene kan fås fra utviklerkonsollen for Twitter etter at du har laget en ny app.

4.2. Java-klasse

Vi kan også bruke en ConfigurationBuilder-klasse til å konfigurere Twitter4J programmatisk i Java:

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

Merk at vi bruker Twitter eksempel i neste avsnitt - når vi begynner å hente data.

4.3. Miljøvariabler

Å konfigurere gjennom miljøvariabler er et annet valg vi har. Hvis vi gjør det, merk at vi trenger en twitter4j prefikset i våre variabler:

$ eksport twitter4j.oauth.consumerKey = // din nøkkel $ eksport twitter4j.oauth.consumerSecret = // din hemmelige $ eksport twitter4j.oauth.accessToken = // ditt tilgangstoken $ export twitter4j.oauth.accessTokenSecret = // ditt tilgangstoken hemmelig

5. Legge til / hente sanntids Tweet-data

Med et fullt konfigurert program kan vi endelig samhandle med Twitter.

La oss se på noen få eksempler.

5.1. Legg ut en Tweet

Vi starter med å oppdatere en tweet på Twitter:

offentlig String createTweet (String tweet) kaster TwitterException {Twitter twitter = getTwitterinstance (); Status status = twitter.updateStatus ("oppretter baeldung API"); retur status.getText (); }

Ved bruk av status.getText (), vi kan hente tweeten som nettopp er lagt ut.

5.2. Få tidslinjen

Vi kan også hente en liste over tweets fra brukerens tidslinje:

offentlig liste getTimeLine () kaster TwitterException {Twitter twitter = getTwitterinstance (); returner twitter.getHomeTimeline (). stream () .map (item -> item.getText ()) .collect (Collectors.toList ()); }

Ved bruk av twitter.getHomeTimeline (), vi får alle tweets lagt ut etter gjeldende konto-ID.

5.3. Send en direkte melding

Å sende og motta en direkte melding til følgere er også mulig ved hjelp av Twitter4j:

offentlig statisk String sendDirectMessage (String mottakernavn, String msg) kaster TwitterException {Twitter twitter = getTwitterinstance (); DirectMessage-melding = twitter.sendDirectMessage (mottakernavn, msg); returmelding.getText (); }

De sendDirectMessage metoden tar to parametere:

  • Mottakers navn: Twitter-brukernavnet til en mottaker av meldingen
  • msg: meldingsinnhold

Hvis mottakeren ikke blir funnet, vil sendDirectMessage vil kaste et unntak med unntakskode 150.

5.4. Søk etter tweets

Vi kan også søke etter tweets som inneholder litt tekst. Ved å gjøre dette får vi en liste over tweets med brukernavnet til brukerne.

La oss se hvordan et slikt søk kan utføres:

offentlig statisk liste searchtweets () kaster TwitterException {Twitter twitter = getTwitterinstance (); Query query = new Query ("kilde: twitter4j baeldung"); QueryResult resultat = twitter.search (spørring); return result.getTweets (). stream () .map (item -> item.getText ()) .collect (Collectors.toList ()); }

Det er klart at vi kan gjenta hver tweet mottatt i a QueryResult og hente relative data.

5.5. Streaming-API-et

API for Twitter-streaming er nyttig når oppdateringer kreves i sanntid; den håndterer trådopprettelse og lytter til hendelser.

La oss lage en lytter som lytter til tweetoppdateringer fra en bruker:

offentlig statisk tomrom streamFeed () {StatusListener lytter = ny StatusListener () {@Override offentlig tomrom påException (Unntak 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) offentlig ugyldighet onTrackLimitationNotice (int numberOfLimitedStatuses) {}}; TwitterStream twitterStream = ny TwitterStreamFactory (). GetInstance (); twitterStream.addListener (lytter); twitterStream.sample (); }

Vi kan sette noen println () uttalelse for å sjekke utdata-tweet-strømmen i alle metodene. Alle tweets har plasseringsmetadata tilknyttet.

Vær oppmerksom på at alle tweetsdataene som hentes av API-en, er i UTF-8-format, og siden Twitter er en flerspråklig plattform, kan noe dataformat være ugjenkjennelig basert på opprinnelse.

6. Konklusjon

Denne artikkelen var en rask, men omfattende introduksjon til bruk av Twitter4J med Java.

Implementeringen av viste eksempler finnes på GitHub - dette er et Maven-basert prosjekt, så det skal være enkelt å importere og kjøre som det er. Den eneste endringen vi trenger å gjøre er å sette inn vår egen OAuth-legitimasjon.


$config[zx-auto] not found$config[zx-overlay] not found