Nov 072012
 
Artículo PHP

( Read this post in english )

Twitter pone a disposición de los desarrolladores varios APIs para permitir que un programa pueda interactuar con el servicio que ofrece.

En su primera versión el “Search API” permitía realizar búsquedas de tweets sin necesidad de autentificación. Sin embargo, en la versión 1.1 sólo es posible hacer uso del servicio desde una conexión autentificada OAuth (https://dev.twitter.com/docs/api/1.1/overview).

En este artículo vamos a explicar cómo se puede realizar una conexión OAuth simplificada para una aplicación de usuario único.

Instalación de la librería twitteroauth

En primer lugar, descargamos la librería twitteroauth desde https://github.com/abraham/twitteroauth. El fichero descargado se llama “twitteroauth-master.tar.gz” y ocupa 21695 bytes. Lo descomprimimos y extraemos sus ficheros con el comando:

$ tar xzf twitteroauth-master.tar.gz

Una vez descomprimido, crea un arbol de directorios con los scripts que permiten una implementación completa de OAuth. En nuestro caso, sólo estamos interesados en los ficheros OAuth.php y twitteroauth.php contenidos en el subdirectorio “twitteroauth-master/twitteroauth/”.

Script de conexión a Twitter

Con esto, creamos el script que se conecta a Twitter:

<?php
require_once 'twitteroauth-master/twitteroauth/twitteroauth.php';
define("CONSUMER_KEY", "MI_CLAVE");
define("CONSUMER_SECRET", "MI_CONSUMER_SECRET");
define("OAUTH_TOKEN", "MI_TOKEN");
define("OAUTH_SECRET", "MI_OAUTH_SECRET");
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, OAUTH_TOKEN, OAUTH_SECRET);
$content = $connection->get('account/verify_credentials');
?>

Como vemos, estamos incluyendo en la primera línea la libería “”twitteroauth-master/twitteroauth/twiteroaauth.php” que acabamos de instalar.

Pero tenemos que sustituir MI_CLAVE, MI_CONSUMER_SECRET, MI_TOKEN y MI_OAUTH_SECRET por valores reales. Estos se obtienen como se explica a continuación:

Obtener las claves y secrets para la conexión OAuth

Para ello, hacemos login en https://dev.twitter.com/apps, y accedemos a “My applications”. Si no hemos creado todavía ninguna aplicación, pulsamos el botón “Create a new application” y procedemos a crear una:

Una vez creada la aplicación, (en nuestro caso, “OpenAlfa Tweet Retriever”), hacemos click sobre ella, y en la pantalla de información podremos ver las claves y secrets que necesitamos:

 

Obtener los tweets que contienen un determinado término

Una vez que hemos obtenido las credenciales de acceso, podemos pasar a programar una consulta sencilla, para obtener los tweets que contienen el texto “feliz cumpleaños”:

<?php

require_once 'twitteroauth-master/twitteroauth/twitteroauth.php';
define("CONSUMER_KEY", "MI_CLAVE");
define("CONSUMER_SECRET", "MI_CONSUMER_SECRET");
define("OAUTH_TOKEN", "MI_TOKEN");
define("OAUTH_SECRET", "MI_OAUTH_SECRET");
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, OAUTH_TOKEN, OAUTH_SECRET);
$query = array( "q" => "feliz cumpleaños");
$results = $connection->get('search/tweets', $query);
var_dump($results);

Como vemos, la librería php que estamos utilizando hace muy sencillo realizar la consulta. En primer, lugar obtenemos la conexión creando un objeto “TwitterOauth”. A continuación, basta con llamar al método get(), pasándole el “endpoint” al que queremos acceder, y un array con los parámetros de la consulta.

Al ejecutar el script, obtenemos un resultado en forma de un objeto PHP que contiene un array de tweets:

object(stdClass)#5 (2) {
  ["statuses"]=>
  array(15) {
    [0]=>
    object(stdClass)#6 (23) {
      ["metadata"]=>
      object(stdClass)#7 (2) {
        ["iso_language_code"]=>
        string(2) "es"
        ["result_type"]=>
        string(6) "recent"
      }
      ["created_at"]=>
      string(30) "Sun Mar 22 12:32:16 +0000 2015"
      ["id"]=>
      int(579621613588623360)
      ["id_str"]=>
      string(18) "579621613588623360"
      ["text"]=>
      string(65) "Bleh :s otró día como otros, en fin , Feliz cumpleaños para mi"
      ["source"]=>
      string(66) "<a href="http://twitter.com" rel="nofollow">Twitter Web Client</a>"
      ["truncated"]=>
      bool(false)
    ...

Indice de artículos sobre programación en lenguaje PHP

 Publicado por en 11:26 pm

 Deja un comentario

(requerido)

(requerido)