Seleccionar página

En uno de nuestros proyectos de Turismo Rural, hemos tenido que integrar Twitter en la aplicación web y para ello hemos empleado la API Twitter4J.

Primero deberemos registrar la aplicación en la sección de desarrollo de Twitter, es decir en http://dev.twitter.com:

twitter_1

Creamos el registro de la aplicación:

twitter_4

Ahora ya disponemos de los datos para poder trabajar con Twitter4J (token y tokenSecret):

twitter_6

El proyecto requiere de las librerías que se incluyen en el proyecto Twitter4J y además las librerías de commons-logging o las de SL4J.

A continuación, mostramos parte de la clase para acceder a Tiwitter:

package es.neodoo.twitter;

import java.util.List;

import twitter4j.AccountTotals;
import twitter4j.DirectMessage;
import twitter4j.Paging;
import twitter4j.Query;
import twitter4j.QueryResult;
import twitter4j.ResponseList;
import twitter4j.Tweet;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.auth.AccessToken;

public class TwitterService {

	private Twitter twitter;

	public TwitterService(String token, String tokenSecret) {

		TwitterFactory factory = new TwitterFactory();
		AccessToken accessToken = new AccessToken(token,
                                                          tokenSecret);
		this.twitter = factory.getInstance(accessToken);

	}

	public List searchTweets(String query) throws TwitterException {

		QueryResult result = twitter.search(new Query(query));
		List tweets = result.getTweets();

		return tweets;

	}

}

Y la clase principal para probarlo:

package es.neodoo.twitter;

import java.util.Date;
import java.util.List;

import twitter4j.AccountTotals;
import twitter4j.DirectMessage;
import twitter4j.GeoLocation;
import twitter4j.Place;
import twitter4j.Tweet;
import twitter4j.TwitterException;

public class TwitterMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		String token = "277181746-i5plkIhZlZfszXdNnVFtZ2X8fB2duyBn79eDHTUM";
		String tokenSecret = "yGVTgEBNwCbMtGkbi2Qz1dR51mZLsKzPmJJOUUrYvDU";

		TwitterService ts = new TwitterService(token, tokenSecret);
		List tweets;

		try {

			tweets = ts.searchTweets("ruralbook");

			for (Tweet tweet : tweets) {

				// System.out.println("@" + tweet.getFromUser() + " - "
				// + tweet.getText());

				System.out.print("!!! Twit !!! ");

				Date createdAt = tweet.getCreatedAt();
				String user = tweet.getFromUser();
				long userId = tweet.getFromUserId();

				double latitud = -1, longitud = -1;
				try {
					GeoLocation geoLocation = tweet.getGeoLocation();
					latitud = geoLocation.getLatitude();
					longitud = geoLocation.getLongitude();
				} catch (Exception e) {
				}

				long id = tweet.getId();
				String isoLanguageCode = tweet.getIsoLanguageCode();
				String location = tweet.getLocation();

				Place place = tweet.getPlace();

				Place[] containedWithIn = null;
				String country = null;
				String url = null;
				String fullName = null;
				GeoLocation[][] boundingBoxCoordinates = null;
				String geometryType = null;
				String idPlace = null;
				String name = null;
				String placeType = null;
				String streetAddress = null;
				String urlPlace = null;

				try {
					containedWithIn = place.getContainedWithIn();
					country = place.getCountry();
					url = place.getCountryCode();
					fullName = place.getFullName();
					boundingBoxCoordinates = place.getBoundingBoxCoordinates();
					geometryType = place.getGeometryType();
					idPlace = place.getId();
					name = place.getName();
					placeType = place.getPlaceType();
					streetAddress = place.getStreetAddress();
					urlPlace = place.getURL();
				} catch (Exception e) {
				}

				String profileImageUrl = tweet.getProfileImageUrl();
				String text = tweet.getText();
				String source = tweet.getSource();
				String toUser = tweet.getToUser();
				long toUserId = tweet.getToUserId();

				System.out.println("createdAt: " + createdAt + ", " + "user: "
						+ user + "," + "userId: " + userId + "," + "latitud: "
						+ latitud + "," + "longitud: " + longitud + ","
						+ "id: " + id + "," + "isoLanguageCode: "
						+ isoLanguageCode + "," + "location: " + location + ","
						+ "place: " + place + "," + "containedWithIn: "
						+ containedWithIn + "," + "country: " + country + ","
						+ "url: " + url + "," + "fullName: " + fullName + ","
						+ "boundingBoxCoordinates: " + boundingBoxCoordinates
						+ "," + "geometryType: " + geometryType + ","
						+ "idPlace: " + idPlace + "," + "name: " + name + ","
						+ "placeType: " + placeType + "," + "streetAddress: "
						+ streetAddress + "," + "urlPlace: " + urlPlace + ","
						+ "profileImageUrl: " + profileImageUrl + ","
						+ "text: " + text + "," + "source: " + source + ","
						+ "toUser: " + toUser + "," + "toUserId: " + toUserId);

			}

		} catch (TwitterException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
}

Fijaros que las cadenas token y tokenSecret deben coincidir con las que se generan al inscribir la aplicación en el twitter.

Existe una forma adicional en la que se piden los parámetros Access Token y Access Token Secret pero no lo contemplamos en este apartado.