Introduzione a Twitter4J

1. Panoramica

In questo articolo, daremo uno sguardo all'utilizzo di Twitter4J in un'applicazione Java per comunicare con Twitter.

2. Twitter4J

Twitter4J è una libreria Java open source, che fornisce una comoda API per accedere all'API di Twitter.

In poche parole, ecco come possiamo interagire con l'API di Twitter; noi possiamo:

  • Pubblica un tweet
  • Ottieni la cronologia di un utente, con un elenco degli ultimi tweet
  • Invia e ricevi messaggi diretti
  • Cerca tweet e molto altro ancora

Questa libreria garantisce che possiamo eseguire facilmente queste operazioni e garantisce anche la sicurezza e la privacy di un utente, per il quale abbiamo naturalmente bisogno di avere le credenziali OAuth configurate nella nostra app.

3. Dipendenze di Maven

Dobbiamo iniziare definendo la dipendenza per Twitter4J nel nostro pom.xml :

 org.twitter4j twitter4j-stream 4.0.6 

Per verificare se è stata rilasciata una nuova versione della libreria, tenere traccia delle versioni qui.

4. Configurazione

La configurazione di Twitter4J è semplice e può essere eseguita in vari modi, ad esempio in un file di testo semplice o in una classe Java o anche utilizzando variabili di ambiente.

Diamo un'occhiata a ciascuno di questi modi, uno alla volta.

4.1. File di testo normale

Possiamo usare un semplice file di testo - chiamato twitter4j.properties - per conservare i nostri dettagli di configurazione. Diamo un'occhiata alle proprietà che devono essere fornite:

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

Tutti questi attributi possono essere ottenuti dalla console per sviluppatori Twitter dopo aver creato una nuova app.

4.2. Classe Java

Possiamo anche utilizzare una classe ConfigurationBuilder per configurare Twitter4J a livello di programmazione in Java:

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();

Tieni presente che utilizzeremo l' istanza di Twitter nella sezione successiva, quando inizieremo a recuperare i dati.

4.3. variabili ambientali

La configurazione tramite variabili di ambiente è un'altra scelta che abbiamo. Se lo facciamo, nota che avremo bisogno di un prefisso twitter4j nelle nostre variabili:

$ 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. Aggiunta / recupero dei dati dei Tweet in tempo reale

Con un'applicazione completamente configurata, possiamo finalmente interagire con Twitter.

Diamo un'occhiata ad alcuni esempi.

5.1. Pubblica un Tweet

Inizieremo aggiornando un tweet su Twitter:

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

Utilizzando status.getText (), possiamo recuperare il tweet appena pubblicato.

5.2. Ottieni la cronologia

Possiamo anche recuperare un elenco di tweet dalla timeline dell'utente:

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

Utilizzando twitter.getHomeTimeline (), otteniamo tutti i tweet pubblicati dall'ID dell'account corrente.

5.3. Invia un messaggio diretto

L'invio e la ricezione di un messaggio diretto ai follower è possibile anche utilizzando Twitter4j:

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

Il metodo sendDirectMessage accetta due parametri:

  • RecipientName : il nome utente Twitter di un destinatario del messaggio
  • msg : contenuto del messaggio

Se il destinatario non verrà trovato, sendDirectMessage genererà un'eccezione con codice di eccezione 150 .

5.4. Cerca tweet

Possiamo anche cercare tweet contenenti del testo. In questo modo, otterremo un elenco di tweet con il nome utente degli utenti.

Vediamo come può essere eseguita una tale ricerca:

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()); }

Chiaramente, possiamo iterare su ogni tweet ricevuto in un QueryResult e recuperare i dati relativi.

5.5. L'API di streaming

Twitter Streaming API è utile quando sono necessari aggiornamenti in tempo reale; gestisce la creazione di thread e ascolta gli eventi.

Creiamo un listener che ascolti gli aggiornamenti di un utente:

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(); }

Possiamo inserire un'istruzione println () per controllare il flusso di tweet in uscita in tutti i metodi. A tutti i tweet sono associati metadati sulla posizione.

Tieni presente che tutti i dati dei tweet recuperati dall'API sono nel formato UTF-8 e poiché Twitter è una piattaforma multilingue, alcuni formati di dati potrebbero non essere riconoscibili in base alla loro origine.

6. Conclusione

Questo articolo è stata un'introduzione rapida ma completa all'uso di Twitter4J con Java.

L'implementazione degli esempi mostrati può essere trovata su GitHub: questo è un progetto basato su Maven, quindi dovrebbe essere facile da importare ed eseguire così com'è. L'unica modifica che dobbiamo fare è inserire le nostre credenziali OAuth.