Weblog de Victor Ramirez

Sábado, febrero 15, 2014

Crear aplicaciones para Twitter desde NetBeans

Filed under: java, jdk, jdk7, netbeans, tutorial, Twitter — Etiquetas: , , , , , , , — vramirez @ 3:05 PM

En el siguiente post crearemos una aplicación ejemplo muy básica y sencilla (sin GUI, de hecho) en NetBeans para conectarnos a Twitter y leer nuestro timeline. Los siguientes son los prerequisitos para este tutorial:

  • Cuenta en Twitter
  • NetBeans IDE 7.x
  • JDK 1.7
  • Twitter4J

Lo primero es loguearnos en el sitio web de desarrolladores para Twitter https://dev.twitter.com/apps. Una vez allí le damos click en crear nueva aplicación. A continuación, diligenciamos un formulario con el nombre que tendrá la aplicación, una breve descripción (10 o más caracteres), y una URL de la App, la cual se supone apunta a una direccion en Internet con información sobre la App. Por ahora, pueden poner cualquiera como en mi ejemplo y cambiarla después (La URL debe ser completa, por ejemplo, debe empezar por http o https…).

Twitter new app

Formulario de creación nueva aplicación en Twitter

Una vez la hemos creado, Twitter nos muestra una serie de opciones de configuración de la aplicación, acá las vamos a repasar brevemente mostrando lo que nos interesa para el tutorial.

En la pestaña “Details” verificar que la opción “Access level” tenga “read-only”. En esta misma pestaña, al final, se encuentra la opción para borrar la aplicación.

En API Keys esta toda la info que necesitaremos darle a nuestra aplicación en NetBeans. En la sección “Your access token” dar click en “Create my access token”. Darle “Refresh” a la página. Ahora tenemos 4 parámetros MUY importantes para nuestra App:

  • API key
  • API Secret
  • Access token
  • Access token secret

Ya veremos porqué debemos tener estos 4 hashes muy presentes. Cabe destacar que dichos hashes son SECRETOS, pues si alguien los obtiene, puede suplantar tu aplicación, incluso tu cuenta de Twitter.

Lo siguiente es descargar la librería de Twitter4j entrando a http://twitter4j.org/ y en el link Download descargar el .zip. Una vez descargado, entrar a NetBeans y en Tools –> Libraries  –> New Library. En el nombre, ponerle nombre a la librería, por ejemplo, “Twitter4j” o algo que la identifique con Twitter. En classpath, darle Add Jar/Folder y buscar la carpeta previamente descomprimida de Twitter4J y en la subcarpeta “lib”, se pueden seleccionar todos los archivos jar, sin embargo, agregando solo el que tenga nombre “core”, bastará.

Libreria de Twitter Twitter4J creada en NetBeans

Libreria de Twitter4J creada en NetBeans

Ahora, con la librería ya creada, debemos crear un nuevo proyecto tipo “Java Aplication” de NetBeans. Al proyecto ya creado, agregarle la librería que se creó en el paso anterior. Sobre el proyecto hacer click derecho –> Properties. Luego hacer click en la categoría “Libraries”, en la pestaña “Compile” agregar la librería de Twitter4J. En la clase

public static void main(String[] args) throws TwitterException {
        ConfigurationBuilder cb = new ConfigurationBuilder();
        TwitterFactory tf = new TwitterFactory(cb.build());
        Twitter twitter = tf.getInstance();
        List<Status> statuses = twitter.getHomeTimeline();
        System.out.println("Mostrando el timeline...");
        for (Status status : statuses) {
            System.out.println("@" + status.getUser().getScreenName()+": "+ status.getText());
        }
    }

Ahora, debemos pasar los parámetros de la API de Twitter a nuestra aplicación. Para ello existen varias alternativas. Una de ellas, es mediante un archivo .properties:

Lo primero es dar click derecho sobre el proyecto New –> Other… –> Other –> Properties File. Al archivo llamarlo twitter4j. El archivo debe quedar en la raíz del proyecto, al mismo nivel de carpetas como “src” y “dist”.

El archivo debe ser completado con estas cuatro líneas, con la información (los hashs) provista por Twitter:

oauth.consumerKey=<La Api Key>
oauth.consumerSecret=<La Api Secret>
oauth.accessToken=<El token access>
oauth.accessTokenSecret=<El token access secret>

Desde luego, todo esto sin los signos de <>.

Ahora podemos ejecutar la aplicación y mostrará por consola nuestro timeline más reciente. O

Otra opción es pasarle los parámetros a través del código Java directamente, (eliminando primero el archivo .properties) así:

public static void main(String[] args) throws TwitterException {
        // TODO code application logic here
        ConfigurationBuilder cb = new ConfigurationBuilder();
         cb.setDebugEnabled(true)
         .setOAuthConsumerKey("<API key>")
         .setOAuthConsumerSecret("<API key secret>")
         .setOAuthAccessToken("<Access token>")
         .setOAuthAccessTokenSecret("<Access token secret>");
        TwitterFactory tf = new TwitterFactory(cb.build());
        Twitter twitter = tf.getInstance();
        List<Status> statuses = twitter.getHomeTimeline();
        System.out.println("Showing home timeline.");
        for (Status status : statuses) {
            System.out.println("@" + status.getUser().getScreenName()+ status.getText());
        }
    }

En la sección Code Examples de  http://twitter4j.org se pueden encontrar distintos ejemplos más avanzados de código Java para Twitter. Espero que este corto tutorial les sea de utilidad.

Notas:

  • Un error de “401:Authentication credentials” es que alguno de los 4 hash fueron mal ingresados.
  • Un error de “Authentication credentials are missing” indica que a la aplicación le faltan los 4 hashs. Si se le están pasando los hashs a la aplicación mediante archivo .properties, es probable que el archivo no esté en la raíz del proyecto (debe estar en el mismo nivel del archivo manifest.mf).

Jueves, abril 16, 2009

Nimbus Look & Feel

Filed under: java, jdk, jdk7, netbeans, tips — Etiquetas: , , , , , , , — vramirez @ 9:09 PM

Desde el JDK 6 release 10 (jdk6u10), está disponible un nuevo Look & Feel para las aplicaciones en Java: Nimbus Look & Feel. El cual tiene una manera de funcionar muy particular y distinta a como venían funcionando los L&F anteriores.

Para invocarlo simplemente escribimos en el “Main” de nuestra aplicación:

public static void main(String[] args) {
        // TODO code application logic here
        for(UIManager.LookAndFeelInfo laf:UIManager.getInstalledLookAndFeels()){
            if("Nimbus".equals(laf.getName()))
                try {
                UIManager.setLookAndFeel(laf.getClassName());
            } catch (Exception ex) {
            }
        }
    }

No es recomendable poner el L&F directamente asi:

try {
       UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
     } catch (Exception ex) {// Manejo de excepción...
                                     }

Por varias razones. La principal es que a partir de Java 7, el L&F Nimbus cambiará de paquete y se ubicará en javax.swing.plaf.nimbus. Muchos se preguntarán “Y por qué no lo pusieron ahi desde que lo crearon?” La respuesta es sencilla; Los paquetes java.* y javax.* no pueden ser modificados en releases menores. Por otro lado, nada nos garantiza que nuestra aplicación se vaya a ejecutar en un cliente con jdk6u10 o superior instalado.

Una de las grandes ventajas de Nimbus sobre los otros L&F’s es que este no se encuentra basado en Bitmaps, sino que todo se basa en Vectores, los cuales permiten tener mayor precisión al pintar el componente, sobretodo cuando se agrandan o reducen componentes, cuando se maximiza o restaura una aplicación.

Existe una aplicación de prueba llamada Laffy, con la cual se puede observar todos los componentes Swing, con el L&F de Nimbus. Una vez descarguen jdk6u10, o superior instalado pueden hacer click aqui para darle un vistazo a Laffy y por supuesto, el más reciente Look and Feel de Java; Nimbus. He aqui un vistazo a Laffy.

Nimbus Look & Feel

Nimbus Look & Feel

Los invito a todos a probar en sus aplicaciones este nuevo L&F, seguro sus clientes (o su jefe ;-) ) se mostrarán sorprendidos!

Blog de WordPress.com.