El uso de la API de Twitter puede ser muy enriquecedor, hay sitios web que funcionan exclusivamente gracias a lo que nos permite hacer esta API (API Twitter 1.1 en el momento de escribir estas líneas) tuiteaeso.com es un buen ejemplo.
Vamos a ver cómo nos autentificamos en Twitter usando el protocolo oAuth, propio de la API 1.1 de la red social del pajaro azul. Una vez hayamos concluido con éxito este proceso, dispondremos de las credenciales necesarias para interactuar con Twitter desde fuera, por ejemplo, desde una aplicación web.
Vamos a tomar como referencia la biblia del uso de la API de Twitter con PHP, la librería twitteroauth de Abraham Williams, podéis leer y descargar la documentación original y todo el código en su Github, al final del artículo. Hoy no vamos a entrar en todo el protocolo oAuth, pero sí lo veremos en otro artículo más adelante.
Antes de empezar…
Soy el primero al que le gusta empezar a construir casas por el tejado, pero no te lo recomiendo, vamos primero a construir unos pilares sólidos -o al menos aceptables-, debes conocer los siguientes conceptos antes de seguir con esta guía:
- Qué es un token
- Para qué sirve la API de Twitter
- Qué es una API
- Programación básica en PHP (con POO)
- Credenciales de cliente oAuth
- Cómo crear una aplicación en Twitter
Flujo del proceso
Este es el flujo que sigue el proceso de autenficiación en Twitter mediante oAuth:
- Construir un objeto TwitterOAuth usando las credenciales de cliente.
- Pedimos credenciales temporales que Twitter nos enviará.
- Construimos una URL para que Twitter nos autorice.
- Redirigimos al usuario a esa URL en Twitter.
- El usuario autoriza el acceso a nuestra aplicación (ver cómo crear una aplicación en Twitter) y Twitter nos lo redirige a nuestra callback url.
- Construimos un nuevo objeto TwitterOAuth con las credenciales de cliente y las credenciales temporales que nos acaba de proporcionar Twitter.
- Obtenemos tokens permanentes desde Twitter.
- Volvemos a crear un objeto TwitterOAuth, ahora con las credenciales de cliente.
- Consultas a la Twitter API.
Ejemplo de uso de oAuth en Twitter
La mejor forma de aprender cómo autentificarnos en la API Twitter 1.1 con oAuth es hacer un ejemplo paso por paso, para ello vamos a utilizar todo lo que nos ofrece Abraham Williams en su Github (descarga los archivos al final del artítulo), es necesario que abras la carpeta y empecemos a trabajar sobre ello.
1) Antes de empezar, tienes que tener una app creada para interactuar con la API de Twitter y hacer uso de las librerías TwitterOAuth.php, OAuth.php y todo lo que eso conlleva.Necesitas darle a la aplicación los permisos que luego vayas a querer utilizar. Necesitas dos datos de la aplicación: el CONSUMER_KEY y el CONSUMER_SECRET, en nuestro ejemplo
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET); // Use config.php client credentials $connection = new TwitterOAuth('abc890', '123xyz');
2) Utilizando la variable $connection construimos el objeto para pedirle a Twitter las credenciales temporales.
$temporary_credentials = $connection->getRequestToken(OAUTH_CALLBACK); // Use config.php callback URL.
3) Ahora que tenemos las credenciales temporales el usuario tiene que ir a Twitter (nosotros le mandamos para allá mediante el botón Sing in with Twitter) para autorizar a nuestra apliación, el segundo parámetro FALSE es opcional y sirve para que no se use el Sing in with Twitter.
$redirect_url = $connection->getAuthorizeURL($temporary_credentials); // Use Sign in with Twitter $redirect_url = $connection->getAuthorizeURL($temporary_credentials, FALSE);
4) Ya tenemos la URL de twitter a la que el usuario será enviado:
https://api.twitter.com/oauth/authenticate?oauth_token=xyz123
5) Ahora el usuario está en Twitter, si no tiene sesiçon iniciada deberá iniciarla, se le preguntará si de verdad quiere darnos permisos y será redirigido a nuestra callback url.
6) Una vez de vuelta en nuestro callback.php creamos otro objeto con las credenciales temporales, ya autorizados.
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);
7) Ahora le pediremos a Twitter a través de este objeto que nos dé unas credenciales a más largo plazo, lo cuál nos permitirá hacer queries más adelante. Lo normal es tomar los tokens que Twitter nos envía y almacenarlos en la base de datos para posterior uso.
$token_credentials = $connection->getAccessToken($_REQUEST['oauth_verifier']);
8) Con las credenciales buenas, creamos un nuevo objeto TwitterOAuth.
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $token_credentials['oauth_token'], $token_credentials['oauth_token_secret']);
9) Ahora ya podemos, usando este último objeto, interactuar con la API de Twitter mediante los métodos GET, POST y DELETe, por ejemplo, esto publicará un tweet con la cuenta del usuario:
$account = $connection->get('account/verify_credentials'); $status = $connection->post('statuses/update', array('status' => 'Que buen tutorial de @FaustoRM'));
Documentación original (en inglés) y código: Twitteroauth – Abraham
Cualquier duda, sugerencia, mentada de madre, o similar, en los comentarios 🙂