
Hola nuevamente acá estoy posteando de nuevo cómo cambiar el estado de Twitter con java gracias a la API Twitter4J.
Primeramente tenemos que tener descargarnos la API Twitter4J 2.1.2 del siguiente link…
http://twitter4j.org/en/twitter4j-2.1.2.zip
Ya descargada la añadimos a nuestro IDE en mi caso uso Netbeans:
- Botón derecho sobre “libraries (Librerías)”
- ADD jar/folder (Agregar)
- Seleccionamos el archivo que descargamos anteriormente del link antes mencionado
Y listo ya tenemos acceso a la API Twitter4J de twitter…
Comenzaremos creando nuestra clase base llamada TwitterJ.java y hacemos las importaciones correspondientes
import java.util.List;
import twitter4j.*;
Ahora creamos un atributo privado del tipo Twitter llamado mi_twitter
private Twitter mi_twier;
Siguiendo creamos nuestro honorable constructor de la siguiente manera
public TwitterJ(String userName, String password) {
try {
mi_twitter = new Twitter(userName, password);
mi_twitter.verifyCredentials();
} catch (TwitterException ex) {
System.out.println("Error: "+ex.getMessage());
}
}
Información Constructor:
- Dos parámetros String que contendran usuario-password respectivamente
- Creación de objeto con los datos ingresados como parámetros (usuario,password)
- Verificación de credenciales (si los datos ingresados son correctos)
Ahora crearemos el método que nos dará un nuevo tweet ó cambiará el estado
public void nuevoTweet(String tweet) {
try {
this.mi_twitter.update(tweet);
} catch (Exception ex) {
System.out.println("Error: " + ex.getMessage());
}
}
Información método nuevoTweet(String tweet):
- String tweet será el nuevo estado que enviaremos
- llamamos al método update de la clase Twitter y le damos de parámetro lo ingresado en el argumento de método creado
Ahora crearemos el método que nos devolverá nuestro actual estado
public String getEstado(){
String estadoActual = "";
try {
List<Status> statusList = mi_twitter.getUserTimeline();
estadoActual = String.valueOf(statusList.get(0).getText());
} catch (TwitterException ex) {
System.out.println("Error:"+ex.getMessage());
}
return "Mi Estado es: "+estadoActual;
}
Información método getEstado( ):
- creamos una variable que contendrá el estado
- creamos un List que contendrá lo que venga del método de la clase Twitter ( getUserTimeLine )
- nuestra variable antes creada tendrá el valor de la lista en la posición o
- retornamos nuestra variable
Ahora crearemos un método que nos devolverá la lista de contactos en twitter
public void listaDeContactos() {
try {
List<User> friends = mi_twitter.getFriends();
System.out.println("Lista de Contactos\n");
for (User f : friends) {
System.out.println("Usuario: "+f.getScreenName());
System.out.println("Estado: "+f.getStatusText()+"\n");
}
} catch (Exception e) {}
}
Información método listaDeContactos():
- Creamos un List que contendrá lo que venga del método de la clase Twitter ( getStatusText )
- Recorrimos la lista “friends” que debería tener los amigos ó contactos
- Vamos imprimiendo mientras se recorre el for each el USUARIO y ESTADO
La API Twitter4J consta con muchos mas métodos y cosas por el estilo, yo solo te daré la base para comenzar… puedes hacer una gráfica mas atractiva y usar esta clase para aquello…
Bueno ahora haremos nuestro main:
public static void main(String args[]){
TwitterJ t = new TwitterJ("mi_user","Mi_password");
t.nuevoTweet("Ejemplo para Lineadecodigo.com");
t.listaDeContactos();
System.out.println(t.getEstado());
}
Información método main(String args[]):
- Creamos la instancia a nuestra clase antes creada y a la vez pasamos sus dos argumentos ó parámetros en éste caso USUARIO,PASSWORD
- usamos el método nuevoTweet para cambiar el estado actual pasando por parámetro el nuevo tweet
- Llamamos a el método listaDeContactos() que debería imprimir la lista de contactos ó amigos
- imprimimos el estado actual
Como ya ven es demasiado simple hacer un programa que funcione con Twitter…
Interfaz opcional usando la clase antes creada ( Proyecto para Netbeans )
puedes descargarla de acá : Descargar de aquí(opcional)
Carlos
Me parece muy bien el codigo.. pero alguien me podria decir como lo puedo montar en mi servidor, que hay ke hacer? Ejecutandose con netbeans deberia funcionar? o tengo ke realizar otro procedimiento para que funcione
oscar
Este código está desactualizado. Ya no es funcional. La librería ha cambiado.
Pedro
Hola, es un excelente post explicado muy bien, lamentablemente no me ha funcionado, tal vez porque lo estoy agregando en un proyecto hecho en eclipse, cosa que no creo, lo agregre como una nueva libreria la cual nombre tweet, agrege el comprimido al proyecto y nada, ojala alguien pueda ayudarme
Dayana
Seguí todos los pasos para correr el ejemplo y netbeans ni siquiera me reconoce la API de twitter.
jorse_9
List<User> friends = mi_twitter.getFriends();
// getFriends(); no existe… o al menos no lo encuentro
el único que encuentro para obtener usuarios me devuelve solo los Id. mi_twitter.getFriendsIDc();
Necesito obtener los nombres. De mis seguidores.
jorse_9
List friends = mi_twitter.getFriends();
// getFriends(); no existe… o al menos no lo encuentro
el ¨nico que encuentro para obtener usuarios me devuelve solo los Id.
Necesito obtener los nombres.
Andres
oye, no sabes si esa api ya viene lo del Oauth para autenticacion??
youdy
saludos, solo tngo una duda, si yo hago eso en mi pc, como tengo que hacer para que funcione en un servidor al momento de subir mi aplicacion por ejemplo en google app engine
Rodrigo
Alguien sabe porque no funciona cuando cargo esto en el servidor y me aparece el siguiente mensaje
7/05/2010 11:14:54 AM twitter4j.internal.logging.CommonsLoggingLogger info
INFO: Using class twitter4j.internal.logging.CommonsLoggingLoggerFactory as logging factory.
desde mi pc si funciona pero al subirlo al servidor truena, además tiene todos los permisos de red disponibles
Alejandro
Hola… amigo se me ha venido a la mente una idea crees que se pueda enviar twitters cada vez que inserte datos en una tabla de artículos novedosos para que mis seguidores vean mis nuevos artículos?
Alejandro
pues parcialmente ya me funciono he mandado los twets a mi twitter garoalex85 comente el método de listaDeContactos y en el método nuevoTweet cambie la línea por está
this.mi_twitter.updateStatus(tweet);
aunque la lista de Contactos aun no queda Saludos…
Pablo Ruiz
te doy esa solución ya que me encuentro en clases… quizás después busque otra solución
Saludos!
Pablo Ruiz
descárgate ésta API, porque quizás cambien un poco los nombres de los métodos o cosas por el estilo :
Descárgala Twitter4J 2.0.9 de acá:
http://www.mediafire.com/?hzmc0gdrgwz
Alejandro
la misma que tu colocas aqui
Pablo Ruiz
Estás usando la API del link que dejé?
Alejandro
Hola muy buen documento incluso ya lo estoy implementado pero tengo dos instrucciones que no los reconoce
1.- Dentro del método listaDeContactos tiene la siguiente instrucción y me da el error mostrado aquí..
List friends = mi_twitter.getFriends(); <—-
–aparece lo siguiente
Error(41,35): method getFriends() not found in class twitter4j.Twitter
2.- en el método nuevoTweet
this.mi_twitter.update(tweet);
update me lanza el mismo error
podrian ayudarme de favor…
Pablo Ruiz
Me alegro que sea entendido el código, ya que son mis primeros posteos (2POST).
quizás en otra ocación explicaré otros métodos de esta misma API
de a poco iremos subiendo mas ejemplos entendibles y al estilo de siempre
el código y una opción gráfica en mi caso Netbeans!
Saludos
Will
Hola, esta muy bueno el artículo y muy entendible, he trabajado hace algún tiempo con esta librería, pero a veces tenía algunos problemas a la hora de entender la API jejeje… me resultó más cómodo trabajar con otra librería llamada «JTwitter», sería bueno que también le den alguna mención :D.
Saludos :)