En este artículo vamos a explicar una forma de conectar una aplicación Symfony con la API de twitter, para lo que tendremos que realizar peticiones HTTP. Para realizar estas peticiones desde nuestra aplicación Symfony, utilizaremos la librería Guzzle.
Guzzle es una librería que facilita enormemente el envío de peticiones HTTP, incluyendo las herramientas necesarias para crear un cliente de servicios web, como puede ser la API de twitter, utilizando todo el poder de cURL.
Trabajando con una aplicación Symfony2 y utilizando la inyección de dependencias es muy fácil integrar el uso de Guzzle, como veremos en este artículo.
Comenzaremos incluyendo Guzzle en el composer.json de nuestro proyecto y ejecutando la actualización de composer:
"require": {
[...]
"guzzle/guzzle": "3.8.*@dev"
}
$ php composer.phar update guzzle/guzzle
Lo siguiente será crear en nuestro bundle un fichero de configuración en el que incluiremos nuestros datos de twitter y en el fichero services.yml de nuestro bundle importaremos ese fichero con la configuración de twitter y crearemos los servicios que vamos a usar:
# Vabadus/MiBundle/Resources/config/twitter.conf.yml
parameters:
twitter.baseurl: https://api.twitter.com/1.1
twitter.config:
consumer_key: ***
consumer_secret: ***
token: ***
token_secret: ***
# Vabadus/MiBundle/Resources/config/services.yml
imports:
- { resource: twitter.conf.yml }
parameters:
class.guzzle.response: GuzzleHttpMessageResponse
class.guzzle.client: GuzzleHttpClient
class.guzzle.oauthplugin: GuzzlePluginOauthOauthPlugin
services:
guzzle.twitter.client:
class: %class.guzzle.client%
arguments: [%twitter.baseurl%]
calls:
- [addSubscriber, [@guzzle.twitter.oauthplugin]]
guzzle.twitter.oauthplugin:
class: %class.guzzle.oauthplugin%
arguments: [%twitter.config%]
En el fichero donde hemos incluido nuestros datos de twitter, hay una serie de datos en los que hemos puesto asteriscos. Vamos a ver de dónde sacamos esos datos. Necesitaremos crear una aplicación de twitter, para ello, vamos a la dirección https://apps.twitter.com/ y nos logamos con nuestro usuario de twitter llegando a la siguiente página:
Pulsamos en el botón "Create New App" y rellenamos el formulario que nos aparece, incluyendo el nombre de la aplicación, descripción, website y callback url si fuera necesario:
Una vez creada la aplicación twitter, nos aparecerá toda la información, repartida en cuatro pestañas, Details, Settings, API Keys y Permissions. En la pestaña API Keys encontraremos los datos que necesitamos configurar en la aplicación Symfony que estamos desarrollando, pero antes, será necesario crear el token de aceso pulsando en el botón que se muestra en la parte inferior:
Hecho esto, sí podremos copiar los valores API key, API secret, Access token y Access token secret para insertarlos en el fichero twitter.conf.yml que creamos anteriormente.
Y esto es todo. Ya tenemos disponible un servicio que nos permite crear un cliente para interactuar con la API de twitter. Como ejemplo, vamos a ver cómo recuperar los 5 últimos tuits de un usuario:
<?php
namespace Vabadus\MiBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class DefaultController extends Controller
{
public function indexAction()
{
// ...
$cliente_twitter = $this->container->get('guzzle.twitter.client');
$tuits = $cliente_twitter->get('statuses/user_timeline.json?screen_name=vabadusweb&count=5')->send()->json();
// ...
}
}