Di recente, lavorando ad un progetto universitario con Marco Paciscopi, sono venuto a conoscenza di una libreria interessante, capace di integrare alcune funzionalità del social network Twitter in applicazioni Java.
Sto parlando di twitter4j. Abbiamo deciso di utilizzare questa libreria perchè dovevamo lavorare sui risultati di una query fatta sui tweet, ma purtroppo con le nuove API 1.1 è necessario essere autenticati per ricevere i risultati di una query e poterli in seguito analizzare.
Il primo passo necessario è perciò avere un account su Twitter. Fatto ciò, dovete iscrivervi sul sito degli sviluppatori di Twitter, utilizzando le credenziali del vostro account. Questa operazione vi servirà per ottenere i dati di autenticazione necessari. Adesso vi basterà aggiungere una nuova applicazione nella lista "My applications", ottenendo così 4 credenziali di autenticazione:
- Consumer key
- Consumer secret
- Access token
- Access token secret
Questi 4 valori identificheranno il vostro account e la vostra applicazione. Risulta chiaro che devono rimanere segreti.
Tornando ora sul sito di twitter4j scaricate l'ultima versione stabile e scompattate l'archivio.
Adesso siete pronti a creare il vostro nuovo progetto Java su Eclipse. Una volta creato il progetto, andate su Project Properties
Java Build Path. Aprite la scheda Libraries e cliccate su Add External JARs... per aggiungere il file twitter4j-core-VERSIONE.jar contenuto nella cartella che avete scompattato in precedenza.
Ecco quindi il codice messo su da Marco Paciscopi e da me per twittare col vostro account:
import java.io.BufferedReader; import java.io.FileReader; import twitter4j.Status; import twitter4j.Twitter; import twitter4j.TwitterException; import twitter4j.TwitterFactory; import twitter4j.auth.AccessToken; public class Main { public Main() { } public static void main(String args[]) { MyTwitter myTwitter = new MyTwitter(); myTwitter.setConsumerKey("CONSUMERKEY"); myTwitter.setConsumerSecret("CONSUMERSECRET"); try { myTwitter.doStart(); } catch (Exception e) { e.printStackTrace(); } } } public class MyTwitter { public MyTwitter() { } private String consumerKey; private String consumerSecret; private Twitter twitter; public String getConsumerKey() { return consumerKey; } public void setConsumerKey(String consumerKey) { this.consumerKey = consumerKey; } public String getConsumerSecret() { return consumerSecret; } public void setConsumerSecret(String consumerSecret) { this.consumerSecret = consumerSecret; } public void doStart() throws Exception { this.doOauth(); this.doTweet(); } public void doOauth() throws Exception { twitter = TwitterFactory.getSingleton(); AccessToken accessToken = loadAccessToken(); twitter.setOAuthConsumer(consumerKey, consumerSecret); twitter.setOAuthAccessToken(accessToken); } public void doTweet(){ String tweet = ("Hi! This tweet has been sent from a Java Application! @allafinedelpalo"); Status status; try { status = twitter.updateStatus(tweet); System.out.println("Successfully updated the status to [" + status.getText() + "]."); } catch (TwitterException e) { e.printStackTrace(); } } private static AccessToken loadAccessToken() throws Exception { FileReader fileReader = new FileReader("access.txt"); BufferedReader bufferedReader = new BufferedReader(fileReader); String token = bufferedReader.readLine(); String tokenSecret = bufferedReader.readLine(); bufferedReader.close(); return new AccessToken(token,tokenSecret); } }
Prima di tutto le stringhe CONSUMERKEY e CONSUMERSECRET dovrete modificarle con i vostri dati. Per quanto riguarda i token, abbiamo deciso di caricarli da un file access.txt contenuto nella cartella del progetto Java. La funzione LoadAccessToken() si occupa proprio di questo, leggendo dal file di testo prima il token e poi il token secret.
Le classi della libreria twitter4j che vedremo nell'esempio sono:
- AccessToken
- Status
Ciò che fa la classe Main è abbastanza ovvio; andiamo perciò a vedere cosa succede nella classe MyTwitter.
La funzione customizzata doOauth() crea l'oggetto di classe Twitter e lo rende Singleton. Dopodichè effettua l'autenticazione vera e propria attraverso la funzione LoadAccessToken(): a partire da consumer key e consumer secret si caricano i due token all'interno dell'oggetto della classe AccessToken. Come già detto, le due stringhe di token sono state precedentemente immagazzinate in un file di testo. I dati di autenticazione sono impostati con le due funzioni della classe Twitter setOAuthConsumer() e setOAuthAccessToken().
Adesso abbiamo inizializzato i dati per l'autenticazione, assegnandoli all'oggetto twitter di riferimento per questa applicazione. Siamo pronti per tweettare il nostro primo messaggio. Per farlo, si utilizza la funzione doTweet(), la quale crea un oggetto della classe Status che rappresenterà il nostro tweet.
Inizializzato con la stringa che vogliamo cinguettare, si utilizza la funzione updateStatus() della classe Twitter per inviare il tweet.
Questa ovviamente non è l'unica funzionalità della libreria. In un futuro tutorial vedremo come effettuare query sui tweet utilizzando un'altra piccola applicazione in Java. Come sempre, per problemi, delucidazioni o se trovate errori nell'articolo, vi invito a lasciare un commento all'articolo.
