Login con Twitter
Realizar el login con Twitter, al igual que pasa con el de Yammer y Office que vimos anteriormente, nos permite, no sólo identificar al usuario, sino que también nos da acceso a las funcionalidades expuestas por su API. El caso de Twitter además es especial, ya que si bien generalmente las APIs se crean después que los clientes y exponen las funcionalidades de estos que son de más utilidad, en el caso de que implementemos el login con Twitter, tendremos acceso a más funcionalidades que las que están expuestas en sus propias aplicaciones cliente.
Dependiendo del proveedor de una API, la documentación suele ser mejor o peor, y aunque quizá sea porque era muy tarde cuando la estuve leyendo, la de Twitter me pareció extremadamente confusa. En cualquier caso, una vez hechas pruebas, los pasos para dar son sólo cuatro, y aunque los podéis encontrar dando vueltas por la documentación, voy a dejároslos aquí con un poco más de claridad -espero-:
- Lo primero, como siempre, es crear una aplicación. Esto lo podemos hacer en el portal de gestión de aplicaciones. Sólo necesitaremos dar un nombre, una dirección y la web dónde se encontrará (aunque lo podremos cambiar después). Por defecto las aplicaciones se crean con permisos de lectura y escritura, pero sin acceso a los mensajes directos. Podemos cambiarlos para que sean de sólo lectura o para que incluyan el acceso a los MD. Acordaros de rellenar la url de callback, para que Twitter os pueda devolver el control.
- Aprovechando los datos que nos da Twitter en el paso anterior, tendremos que generar una firma. El algoritmo está bien definido con un paso a paso que no tiene mucha perdida, aunque sí es cierto que son muchos muchos pasos, y hay que tener cuidado de hacerlos todos bien -luego os explico un truco-. Esa firma se utilizará en la cabecera de autorización para realizar las llamadas. Cada llamada llevará una firma distinta, ya que parte de los datos que se usan son la url y los parámetros.
- Lo siguiente es solicitar un request token mediante POST usando la firma anterior como header de Authorization. Si queréis hacer una pruebilla de como se solicita este token -con Postman por ejemplo- sin necesidad de implementar el algoritmo del punto 2, en el selector de la página de documentación podéis seleccionar la aplicación para la que queréis hacer la prueba. Os aparecerá un formulario en el que ya tendréis rellenos los campos consumer key y consumer secret, y sólo tendréis que modificar el request type (a POST) y la request URI (a https://api.twitter.com/oauth/request_token) y podréis generar una firma con facilidad. Ten en cuenta que entre los datos de la firma se encuentra el Timestamp de cuando se está realizando la operación, así que si tardas «mucho» en utilizarla dejará de ser válida (esto es lo que ice la documentación, y no sé lo que será mucho para Twitter, pero yo he probado una hora después y seguía funcionando).
- Con la respuesta recibida en el paso anterior (en concreto con el oauth_token), ya podremos redirigir a nuestro usuario a la página autorización de Twitter (https://api.twitter.com/oauth/authorize?oauth_token=elTokenRecibido) que devolverá el control a la url de callback que indicamos en el primer paso, pasándole por el query string un oauth_token y un oauth_verifier.
Con esto el usuario ya se ha logueado, pero si queremos hacer alguna llamada a la API tendremos que cambiar el request token que obtuvimos en el paso 3, utilizando el código de verificación del paso cuatro (oauth_verifier) para obtener un access token que será el que usaremos para realizar las llamadas a la API.
Como veis, es un proceso que tiene su intríngulis, y aunque está muy bien interesarse en como funcionan las ruedas, no hay que reinventarlas, y más en un caso como este en el que hay que dar muchos pasos y es muy fácil equivocarse con alguno. Por esto, lo que os recomiendo es que, ahora que sabéis esto, si queréis meterle mano a la API de Twitter os deis una vuelta por la sección de librerías a ver si encontráis algo que se ajuste a vuestras necesidades, ya que es una API muy explotada y que tiene wrappers de todo tipo.
3 Responses to “Login con Twitter”