Guía para utilizar la API de Twitter Search

Mostrar tuits en tu sitio web es una manera estupenda de instigar a tus visitantes a seguir tu cuenta de Twitter, y el contenido dinámico puede ayudar a que tu sitio web sea indexado por Google más a menudo. Mediante la API de Twitter Search es posible incluir dichos tuits en tu sitio web, como si fuese HTML normal con textos y enlaces.

Este tutorial te mostrará cómo agregar tuits a tu web de forma sencilla utilizando una potente librería de PHP muy fácil de utilizar. Antes de empezar, debes crear una app de Twitter y obtener las credenciales requeridas para acceder a la API de Twitter Oauth REST. Accede a tu cuenta de Twitter y ve hasta la sección Desarrolladores.

Una vez tengas la Consumer Key (API Key), la Consumer Secret (API Secret), el Access Token y el Access Token Secret puede utilizarlas en la librería PHO para acceder a la API de Twitter Search.

La librería de Twitter PHP

Adoro escribir mi propio código, pero también os digo que reinventar la rueda es estúpido. El proyecto TwitterOAuth de Abraham Williams es una magnífica librería PHP que puedes utilizar para todas las interacciones de con la Twitter Oauth REST API.

Ojo, solo funciona con PHP 5.4 o superior. Si en tu alojamiento utilizas una versión anterior de PHP, es el momento o de moverse o de actualizar.

Puedes instalar la clase PHP de dos maneras, o bien utilizando Composer, o bien manualmente. Para este tutorial utilizaré el método manual porque Composer no está al alcance de todos los usuarios. Si has utilizado Composer antes, estoy seguro que sabrás cómo instalar TwitterOAuth sin problema alguno. Descárgate este fichero zip, extráelo y sube su contenido al directorio twitteroauth-master de tu servidor web. Crea también un nuevo fichero php con el nombre de twitterfeed.php y añádele el siguiente código.

require_once "twitteroauth-master/autoload.php";
use AbrahamTwitterOAuthTwitterOAuth;

define('CONSUMER_KEY', 'enter yours');
define('CONSUMER_SECRET', 'enter yours');
define('ACCESS_TOKEN', 'enter yours');
define('ACCESS_TOKEN_SECRET', 'enter yours');

Con el código de arriba llamamos al fichero autoload.php, el cual debe existir en un subdirectorio dentro de la ubicación donde has guardado el fichero twitterfeed.php. No olvides introducir las credenciales que has obtenido de tu app de Twitter.

Código de ejemplo de la API de Twitter Search

Vamos a crear un objeto simple para obtener los 5 últimos tuits de tu timeline de Twitter:

$conn = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
$tweets = $conn->get("statuses/user_timeline", array("count" => 5, "exclude_replies" => true));
foreach ($tweets as $tweet) {
	echo '<p>'.$tweet->text.'<br>Posted on: <a href="https://twitter.com/'.$tweet->user->screen_name.'/status/'.$tweet->id.'">'.date('Y-m-d H:i', strtotime($tweet->created_at)).'</a></p>';
}

En el ejemplo utilizo diferentes objetos para obtener el texto del tuit, la fecha y la status URL. Utilizo print_r($tweet) para comprobar que los elementos objeto están disponibles. Para el método get uso el endpoint “statuses/user_timeline” para recibir las actualizaciones de mi propio timeline. Échale un vistazo a la documentación de la Twitter REST API para saber más acerca de endpoints y métodos. En el siguiente ejemplo, verás como utilizo un endpoint distinto, “search/tweets”.

$conn = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
$query = array(
	"q" => "#wordpress",
	"count" => 5,
	"result_type" => "recent"
);
$tweets = $conn->get('search/tweets', $query);
foreach ($tweets->statuses as $tweet) {
	echo '<p>'.$tweet->text.'<br>Posted on: <a href="https://twitter.com/'.$tweet->user->screen_name.'/status/'.$tweet->id.'">'.date('Y-m-d H:i', strtotime($tweet->created_at)).'</a></p>';
}

Como puedes ver, en este ejemplo estoy utilizando el endpoint “search/tweets”, pero incluso de pueden utilizar más opciones. Puedes usar los mismos operadores de búsqueda como una búsqueda normal de la web de Twitter. La documentación de la API de Twitter ofrece una información muy completa con ejemplos y demás. Puedes escoger distintos tipos de resultados de búsqueda: mezclados, recientes y popular. Además, puedes filtrar por localización e idioma para obtener tuits de tu región.

Usa Memcache para los resultados de Twitter

La API de Twitter es muy rápida y segura, pero si tu web cuenta con muchos visitantes, necesitarás un sistema de caché, sí o sí. En este tutorial utilizo funciones de la extensión Memcache de PHP

$search = 'PHP tutorials';
$obj_str = 'tweets_'.str_replace(' ', '_', $search);
$memcache_obj = new Memcache;
$memcache_obj->connect("127.0.0.1", 11211);

if (!$tweets = $memcache_obj->get($obj_str)) {
	$conn = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
	$query = array(
		"q" => $search,
		"count" => 5,
		"result_type" => "recent"
	);
	$tweets = $conn->get('search/tweets', $query);
	if (!empty($tweets->statuses)) {
        $memcache_obj->set($obj_str, $tweets, 0, 3600);
    }
}
if (!empty($tweets->statuses)) {
	foreach ($tweets->statuses as $tweet) {
		echo '<p>'.$tweet->text.'<br>Posted on: <a href="https://twitter.com/'.$tweet->user->screen_name.'/status/'.$tweet->id.'">'.date('Y-m-d H:i', strtotime($tweet->created_at)).'</a></p>';
	} 
} else {
	echo '<p>No tweets for this query.</p>';
}

Para obtener una clave única para el objeto Memcache, utilizo el valor de la búsqueda más un prefijo. Por eso, necesito crear el objeto Memcache y probar si ya existe un objeto válido. Si esto es cierto, utilizo el objeto almacenado, de lo contrario, el script ejecutará el código para obtener nuevos tweets. Los nuevos tweets sólo se almacenan en caché si hay uno o más objetos de status disponibles. Para el bucle, he añadido una instrucción IF que comprueba primero la disponibilidad de los objetos status. Si no es así, aparecerá un mensaje.

Fuente: finalwebsites.com

COMPARTE ESTE ARTÍCULO

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
¡SÉ EL PRIMERO EN COMENTAR!
Conéctate o Regístrate para dejar tu comentario.