miércoles, 9 de junio de 2010

Nuestra primera aplicación


Finalmente vamos a ver un poco de código!

El objetivo de este post, es crear una primera aplicación que luego de conectarse a twitter via OAuth, nos muestre un cuadro de texto en el cual podamos introducir un texto que se convertirá en nuestra primera actualización desde nuestra aplicación.

Luego de descomprimir la librería twitteroauth, dentro de nuestro directorio web, tenemos varios archivos:
  • config.php: en este archivo almacenamos las claves de acceso de la aplicación (CONSUMER_KEY, CONSUMER_SECRET) y opcionalmente podemos especificar un callback al cual redireccionar el navegador una vez realizada la autenticación via OAuth. Recordar que si no especificamos una dirección de callback, se utilizará por omisión la dirección que especificamos al registrar la aplicación.
  • redirect.php: este es el archivo que realiza todo el proceso de obtención del access token y redirecciona hacia nuestro callback.
  • callback.php: este archivo verifica si se otorgó o no el permiso y redirecciona hacia la página principal, si la autenticación fue exitosa.
  • index.php: este la página principal de nuestro sitio.
  • clearsessions.php: borra de la sesión del navegador los datos de conexión a twitter.
Lógicamente, debemos modificar el archivo config.php, para almacenar los tokens correspondientes a nuestra aplicación, y especificar nuestro callback. Los archivos redirect.php, callback.php y clearsessions.php no los he modificado.

Sí he modificado el index.php, he quitado todo el contenido que allí se encontraba, y he colocado un enlace hacia update.php, que será la página desde donde haremos nuestra actualización.

En update.php vamos a colocar un formulario con un campo de texto y un botón. El action del formulario va a ser el mismo update.php. La idea es que al cargar la página, en PHP se verifique si se ha recibido el texto del formulario via POST y en caso afirmativo, realice la actualización a twitter (previa verificación de que tenemos permiso de conectarnos a twitter).

Luego, sólo nos queda definir nuestra página HTML, incluir el formulario (y todo el adorno que queramos ponerle). Al principio verificamos que tengamos los datos suficientes para poder realizar la conexión ($connection), verificamos si tenemos un mensaje que twittear o no, y en caso afirmativo, finalmente es que utilizamos nuestra conexión para realizar un post tipo 'statuses/update' con nuestro mensaje.

No explico acá el resto del código de update.php, ya que se trata de un formulario común y corriente en HTML, más sí dejaré el código para su descarga. En este enlace se puede descargar el sitio completo, incluyendo las modificaciones realizadas sobre los archivos originales de twitteroaut. Sólo se debe modificar el archivo config.php para colocar nuestros consumer tokens.

Y eso fue todo! Ahora sólo queda hacer las pruebas. Al ir a http://localhost/tutuitero/index.php, verificará que no estamos autenticados, así que nos redireccionará a redirect.php, el cual se conectará con twitter, twitter nos preguntará si queremos o no que TuTuitero utilice nuestros datos para funcionar, le diremos que sí (en el caso de que no tengamos abierta una sesión twitter en el navegador, nos mostrará un formulario para loguearnos), inmediatamente se invocará callback.php, el cual al verificar que nos logueamos correctamente nos redireccionará a index.php, desde donde podremos ir a update.php mediante el enlace. Una vez en update.php, exitosamente logueados, podremos realizar finalmente nuestros updates!

En los siguientes posts trataremos de mejorar un poco la interfaz de nuestra aplicación y jugaremos con las funciones del API.


domingo, 6 de junio de 2010

Registrando nuestra aplicación en twitter

En este post hablaré del proceso de registro de nuestra aplicación en twitter. Se trata de un proceso bastante sencillo, voy a explicar los aspectos que me parecen relevantes.

Para poder registrar una aplicación, es necesario tener una cuenta en twitter, ya que la aplicación le debe pertenecer a alguien. Supongo que si estás leyendo esto, es porque ya tienes tu cuenta twitter.

Nos dirigimos al siguiente enlace:

Nos aparecerá el siguiente formulario:





Qué debemos colocar en cada campo es bastante intuitivo. He marcado en rojo los 3 que me parecen más importantes.

1. Application type: aquí debemos indicar si nuetra aplicación es de escritorio (como TweetDeck), en cuyo caso seleccionaríamos client, o si es una aplicación web, en cuyo caso seleccionamos browser. En nuestro caso, se trata de una aplicación web.

2. Callback URL: en el caso de seleccionar tipo browser, debemos especificar una URL a la cuál twitter redirigirá el navegador una vez validados los datos del usuario que utilizará nuestra aplicación. Twitter no reconoce "http://localhost" como un dominio válido, y como nuestra aplicación correrá en principio precisamente bajo localhost, utilizamos este truco, de utilizar la IP 127.0.0.1 (la razón se escapa del objetivo del post).

3. Default Access Type: aquí especificamos si nuestra aplicación tendrá permiso de lectura/escritura o lectura solamente. Lógicamente, seleccionaremos la primera opción si queremos hacer actualizaciones de estado, crear, eliminar usuarios, etc.

Como comenté, el resto de los campos son bastante intuitivos de entender lo que hacen. Observen que especifiqué como web de la aplicación este blog, en donde todavía no he subido ni suquiera una línea de código. El último campo ("Use twitter for login") de momento es irrelevante si se marca o no; yo lo hice, pero si no estuviera marcado, no habría ningún problema.

Si vas leyendo las entradas del blog en orden cronológico, en este momento deberías tener: un servidor web, la librería para utilizar OAuth descargada, cURL corriendo en el servidor web y ahora una aplicación registrada en twitter. Ya está todo listo para hacer nuestras primeras pruebas, me he extendido un poco con las explicaciones, pero ahora sí, en la siguiente entrada vendrá la parte interesante :)





sábado, 5 de junio de 2010

La primera aplicación


Ahora voy a explicar el proceso que seguí para publicar mi primer tweet desde mi propia aplicación escrita en PHP utilizando OAuth, pero primero voy a comentar el proceso general para conectarte a twitter a través de una aplicación externa.

Es tan sencillo como seguir estos 3 pasos:
1.- Obtener un consumer token
2.- Obtener un request token
3.- Obtener un access token

el consumer token es una clave que se otorga a cada aplicación al registrarla en twitter, así que ese debe se ser el primer paso si quieres construir la tuya. Es una clave que no cambia, a menos que el propio creador de la aplicación solicite su renovación.

Teniendo ya el consumer token, cada vez que se vaya a abrir una sesión twitter con la aplicación, se debe solicitar un request token, que es una clave temporal (válida mientras dure la sesión) que habilita a la aplicación para ser utilizada durante dicha sesión.

Teniendo ya el request token, la aplicación está lista para solicitar al usuario que permita utilizar su cuenta durante esa sesión. De esta forma: con el request token y el permiso de usuario, twitter nos dará un access token, con el cual finalmente podremos enviar/solicitar información a través de la API.

Este es el proceso general para lograr comunicarnos con twitter, utilizando OAuth. Ahora pasaré a describir brevemente el ambiente bajo el cual voy a programar mi aplicación.


Ajustando el ambiente de trabajo

Recordando que mi objetivo es lograr establecer una conexión entre twitter y una aplicación escrita en PHP que pueda correr desde mi servidor web local, no hace falta decir que requiero tener el servidor web instalado en mi PC (en mi caso, utilizo XAMPP, bajo Windows Vista).

Para utilizar OAuth, tenemos 2 opciones:
1) Programar nuestras propias funciones de conexión para utilizar el API.
2) Utilizar una librería que nos evite tener que hacer todo desde el principio.

Programar nuestras funciones para manejar OAuth no es técnicamente complicado y existe suficiente documentación en la red, sin embargo requiere lógicamente algo de tiempo. Por el otro lado, utilizar una librería existente nos ahorra tiempo, pero dependiendo del lenguaje en el que vayamos a desarrollar, probablemente ni siquiera exista (todavía) una librería, o no cubra nuestros requerimientos.

En mi caso, programaré en PHP, para el cual existen ya varias librerías. En particular estuve revisando 2:
  • pecl/oauth: una librería de propósito general para trabajar con el protocolo OAuth (sirve no sólo para twitter, sino para Google, Yahoo!, entre otros).
  • twitteroauth: una librería escrita por @abraham, especificamente para trabajar con el protocolo OAuth con twitter.
La primera opción parece la más completa, especialmente si en un futuro tenemos planificado conectarnos a otras redes/aplicaciones que utilicen el protocolo OAuth. Al momento de escribir este post, acabada de salir la versión 1.0 estable. Su instalación bajo linux parece muy sencilla, pero de momento no he logrado instalarla bajo Windows, de modo que me voy por la segunda opción, con la promesa de volver a intentar la primera en un futuro no muy lejano.

Voy a perder tiempo si luego quiero cambiar la librería OAuth? No, recordemos que OAuh es sólo la parte de autenticación al utilizar una aplicación para twitter, son unos pocos procedimientos y son muy parecidos entre librerías, de modo que pasar de una a otra no debe debe dar mayor problema.

En definitiva, me voy con twitteroauth por ahora. Una gran ventaja es que no requiere instalación, sólo descargarla, colocarla en nuestro directorio web y está lista para ser utilizada.

Un aspecto importante a tener en cuenta es que tanto twitteroauth como pecl/oauth utilizan cURL, una herramienta para trabajar de forma automatizada con el protocolo URL, por lo que también debemos instalar cURL.

La instalación de cURL es sencilla. Es cuestión de descargar el programa desde aquí, dependiendo del sistema operativo, y seguir las instrucciones que se encuentran aquí para hacerlo funcionar con PHP. En el caso de utilizar XAMPP, es más sencillo aún, sólo se requiere abrir el archivo php.in (que se encuentra dentro del directorio apache/bin/) y descomentar (quitar el ";" al comienzo) la línea que contiene:

extension=php_curl.dll

Con esto cURL quedará listo para utilizarse dentro de nuestras aplicaciones web.

En resumen, en esto consiste mi ambiente de trabajo: servidor web + librería para OAuth + cURL. Para no extender, dejaré esta entrada hasta aquí, y en la siguiente explicaré el proceso de registro de la aplicación en twitter, y cómo utilizar twitteroauth para producir nuestra primera actualización via API.


viernes, 4 de junio de 2010

TuTuitero is Alive!


Luego de un par de horas investigando y otro par de horas testeando, he logrado enviar una actualización de twitter, a través de mi cuenta (@marcocamejo), desde mi servidor web XAMPP (sobre Windows Vista).

Así se ve mi actualización:










Este pequeño paso lo he logrado utilizando la librería twitteroauth, de @abraham, una librería en PHP para trabajar con la API de OAuth de twitter, la cual puede descargarse gratuitamente desde el siguiente enlace:

El proceso completo, paso a paso lo detallaré en el siguiente post.

Buenas noches!




Tu Tuitero Oficial


Bienvenidos todos al blog de TuTuitero, la aplicación definitiva para twitter.

TuTuitero surge como un pequeño proyecto personal para la creación de una aplicación para twitter, utilizando OAuth, PHP y (al momento de escribir estas líneas) probablemente una base de datos en PostgreSQL.

La idea es explotar todas las posibilidades que brinda el API de twitter para una variedad de propósitos, que repito, son de momento personales: desde estadísticas y minería de datos, hasta 'botización'.

Nuevamente, Bienvenidos!