Esta entrada no tiene la voluntad de ser un Manual de uso de la API de Twitter, eso se puede encontrar en numerosos recursos de Internet. El objetivo de este artículo es recoger aquellos temas o incidencias que se van produciendo en el uso de las funciones y que muchas veces cuesta un esfuerzo importante solucionar. He de confesar mi absoluta incapacidad para asistir a clases para aprender algo, siempre he sido autodidacta y la mejor manera que tenía para avanzar en la programación era ver ejemplos de código, por eso he querido hacer este artículo. La idea es que esto pueda ayudar a otros programadores y les ahorre tiempo.
Índice de contenidos
Introducción
La programación y los ejemplos en español están basados en el uso de la librería twitteroauth.php para PHP. Antes de poder utilizar estas funciones es necesario haberse dado de alta como desarrollador de Twitter y haber creado una app.
Documentación interesante de Twitter:
- Developers de Twitter
- Rate limits, normalmente 15 min. de intervalo
Instrucciones y funciones de la API de Twitter
Cómo iniciar una conexión con Twitter
La primera función que se debe utilizar siempre, permite crear el objeto $connection que mediante el cual se conecta con Twitter y podemos realizar todas las acciones.
Cuando solo queremos leer tweets basta con dos parámetros:
$connection = new TwitterOAuth(«TWITTER_CONSUMER_KEY»,»TWITTER_CONSUMER_SECRET»);
Cómo leer los datos de una cuenta o usuario de Twitter
Cargar en el objeto $user las información de la cuenta de Twitter en función de su nombre de usuario ($screen_name)
[php]
$user = $connection->get(‘users/show’, array("screen_name" => $screen_name));
[/php]
Si el $screen_name es erróneo entonces Twitter devuelve error, lo podemos controlar así:
[php]
if ($user->errors[0]->code<>""){
echo "Error:".$user->errors[0]->code.": ".$user->errors[0]->message;
}
[/php]
Leer todos los seguidores (followers) de una cuenta de Twitter
[php]
/**
* @return ArrayObject
* Return all followers in Twitter
*/
function get_followers(){
$connection = new TwitterOAuth(get_option("TWITTER_CONSUMER_KEY"),get_option("TWITTER_CONSUMER_SECRET"));
$all_followers = array();
$followers = "";
$cursor = -1;
while ($followers-&amp;amp;gt;next_cursor_str != "0") {
$followers = $connection-&amp;amp;gt;get(‘followers/ids’,array(‘screen_name’ =&amp;amp;gt; "CuentaTwitter","cursor" =&amp;amp;gt; $cursor));
if ($followers-&amp;amp;gt;errors[0]-&amp;amp;gt;code&amp;amp;lt;&amp;amp;gt;""){
echo "Error ".$followers-&amp;amp;gt;errors[0]-&amp;amp;gt;code.": ".$followers-&amp;amp;gt;errors[0]-&amp;amp;gt;message;
}
$all_followers[]=$followers;
$cursor = $followers-&amp;amp;gt;next_cursor_str;
}
unset ($connection);
return $all_followers;
}
[/php]
Leer todos los miembros de una lista de Twitter
[php]
$connection = new TwitterOAuth(get_option("TWITTER_CONSUMER_KEY"),get_option("TWITTER_CONSUMER_SECRET"));
while ($listmembers->next_cursor_str != "0") {
$listmembers = $connection->get(‘lists/members’, array("owner_screen_name" => $_REQUEST[‘username’],"slug" => $_REQUEST[‘listname’],"cursor" => $cursor));
if ($listmembers->errors[0]->code<>""){$return.="Error ".$listmembers->errors[0]->code.": ".$listmembers->errors[0]->message;}
if ($listmembers->errors[0]->code==88){break;}
foreach($listmembers->users as $user){
echo $user->id;
}
$cursor = $listmembers->next_cursor_str;
}
unset($listmembers);
unset($connection);
[/php]
Cómo buscar tweets en función de un texto o hashtag
En una de las funciones donde se utiliza para leer tweets en función de un hashtag concreto dejó de leer tweets. Comprobé que la app no tenía ningún tipo de bloqueo o restricción puesta por Twitter. Al final descubrí que buscando un Trending Topics si funcionaba bien pero con el hashtag no. Pese a que si se hacía una búsqueda con Twitter o Tweetdeck de ese hashtag si que devuelve resultados con el query de la API no es así, imagino que influye el bajo volumen de resultados devueltos.
[php]
$query = array(‘q’ =>$query,’count’ => 20, ‘result_type’ => ‘recent’);
$results = $connection->get(‘search/tweets’, $query);
$tweets = $results->statuses;
foreach($tweets as $tweet) {
…
}
[/php]
Operaciones con Tweets
Leer los últimos tweets de una cuenta
[php]
$connection = new TwitterOAuth(get_option("TWITTER_CONSUMER_KEY"),get_option("TWITTER_CONSUMER_SECRET"));
$tweets = $connection->get(‘statuses/user_timeline’, array(‘screen_name’ => "alexborras"));
$i=0;
foreach ($tweets as $tweet ){
$i++;
if ($tweet->in_reply_to_screen_name==""){ // Control para saber si es una respuesta a otro Tweet
if(is_object($tweet->retweeted_status)){ // Es un RT
echo "Tweet $i ".$tweet->created_at." Es un RT";
}else{ // Is Tweet
echo "Tweet $i ".$tweet->created_at." Es un tweet original";
}
}else{
echo "Tweet $i ".$tweet->created_at." Es una respuesta a otro tweet";
}
}
unset ($connection);
unset ($tweet);
[/php]
Marcar un Tweet como favorito
Aquí es necesario usar los 4 parámetros en $connection ya que vamos a hacer que la cuenta haga una acción determinada como es marcar un tweet como favorito.
[php]
$connection = new TwitterOAuth(get_option("TWITTER_CONSUMER_KEY"),get_option("TWITTER_CONSUMER_SECRET"), get_option("TWITTER_ACCESS_TOKEN"), get_option("TWITTER_ACCESS_TOKEN_SECRET"));
$status = $connection->post(‘favorites/create’, array(‘id’ => ‘964847292304982016’));
echo "
<pre>";
print_r($status);
echo "</pre>
";
[/php]
Si ha funcionado bien $status contiene el Tweet, si no el error. Las últimas 3 líneas son para hacer un poco de debug si es necesario, una vez funcione la rutina se pueden eliminar.
Aspectos a tener en cuenta al desarrollar una app para Twitter
Twitter nos da una serie de recomendaciones al crear una App en su plataforma. Una aceptado el Acuerdo y Política del Desarrollador se deben tener en cuenta los siguientes casos de uso restringido.
Información sensible
Tenga cuidado al usar los datos de Twitter para derivar o inferir características potencialmente sensibles sobre los usuarios de Twitter (es decir, salud, afiliación política o religiosa, origen étnico, orientación sexual y más).
Uso y vigilancia del gobierno
Prohibimos el uso de datos de Twitter y API de Twitter por cualquier entidad con fines de vigilancia.
Automatización
Si su aplicación se utilizará para publicar Tweets, seguir cuentas o enviar mensajes directos, debe revisar cuidadosamente las Reglas de automatización para asegurarse de cumplir con nuestras pautas y nunca realizar acciones masivas, agresivas o spam.