Autenticación OAuth en Twitter con la librería Twitter4J (I)

Hay varias páginas que explican cómo autenticar en Twitter mediante OAuth, ya que, desde el 31 de agosto de 2010, la autenticación Básica no funciona por ser poco segura.

Una de las páginas es: http://blog.jotadeveloper.com/2010/09/06/autentificacion-oauth-con-twitter4j/

También los ejemplos de la página oficial de Twitter4J pueden servirnos de ayuda: http://twitter4j.org/en/code-examples.html

En la web de ayuda para desarrolladores de Twitter también se explica en qué consiste la autenticación OAuth: http://dev.twitter.com/pages/auth

A continuación expongo un resumen rápido de cómo funciona la autenticación OAuth con la librería Twitter4Java:

Cuando se registra una aplicación nueva en Twitter, nos proporcionan dos claves, que identifican a la misma en el proceso de autenticación:

String consumerKey = "Vud9jqF3d68g***ZA07CuQ";
String consumerSecret = "UxYUxG61gjR7nv0MhEk2kww6VKL*****TscURF88";

Al comienzo del proceso y para identificar el “intento” de autenticación, Twitter proporciona otras dos claves:

String token = null;
String tokenSecret = null;

Estas dos claves están dentro de un objeto de la clase RequestToken, y se obtiene de Twitter de esta forma:

RequestToken requestToken = twitter.getOAuthRequestToken();

Para recuperarlas de la clase se pueden usar sus getters:

System.out.println("ANTES Token:" +requestToken.getToken() );
System.out.println("ANTES TokenSecret:" + requestToken.getTokenSecret());

Además de las 2 claves anteriores, obtenemos la URL a la que tiene que acceder el usuario para validarse contra el servicio de Twitter. Será una página Web a la que el usuario tendrá que acceder con su navegador:

System.out.println(requestToken.getAuthorizationURL());

En esta pantalla, se le indicará al usuario que permita a la aplicación indicada por consumerToken autenticarse. Una vez lo acepta, Twitter le proporcionará un PIN que usaremos para obtener el AccesToken final, junto con el requestToken.

accessToken = twitter.getOAuthAccessToken(requestToken, pin);

El accessToken es la autorización de acceso que proporciona Twitter, de modo que con este objeto y las claves de la aplicación, podremos recoger la instancia de Twitter autenticada y poder acceder así a los métodos que nos brinda la librería Twitter4J

twitter = new TwitterFactory().getOAuthAuthorizedInstance(consumerKey, consumerSecret, accessToken);

Antes de terminar, normalmente es necesario hacer que el usuario no tenga que volver a autorizar su acceso cada vez que quiera usar nuestra aplicación. Para ello se incorporan con el objeto AccessToken dos referencias: un token y un tokenSecret, que pueden ser obtenidos mediante los getters correspondientes:

System.out.println("Token:" +accessToken.getToken() );
System.out.println("TokenSecret:" + accessToken.getTokenSecret());

Estos dos códigos son diferentes de los códigos token iniciales, y si los almacenamos (en una base de datos por ejemplo), se podrá recuperar el AccessToken del usuario, de modo que la próxima vez no tendrá que validarse:

String usuario = "pepe";
String token = BDD.getToken(usuario);
String tokenSecret = BDD.getTokenSecret(usuario);
accessToken = new AccessToken(token, tokenSecret);

Y de nuevo recuperamos la instancia de twitter ya autenticada mediante OAuth.

twitter = new TwitterFactory().getOAuthAuthorizedInstance(consumerKey, consumerSecret, accessToken);
Anuncios

3 comments

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s