API de Twitter. Ejemplos de código en PHP
16555
post-template-default,single,single-post,postid-16555,single-format-standard,ajax_fade,page_not_loaded,,vertical_menu_enabled,qode-title-hidden,side_area_uncovered_from_content,qode-theme-ver-11.0,qode-theme-bridge,wpb-js-composer js-comp-ver-5.0.1,vc_responsive
api de twitter

API de Twitter

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.

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:

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)

$user = $connection->get('users/show', array("screen_name" => $screen_name));

Si el $screen_name es erróneo entonces Twitter devuelve error, lo podemos controlar así:

if ($user->errors[0]->code<>""){
echo "Error:".$user->errors[0]->code.": ".$user->errors[0]->message;
}

 

Leer todos los seguidores (followers) de una cuenta de Twitter

/**
* @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;amp;gt;next_cursor_str != "0") {
        $followers = $connection-&amp;amp;amp;gt;get('followers/ids',array('screen_name' =&amp;amp;amp;gt; "CuentaTwitter","cursor" =&amp;amp;amp;gt; $cursor));
        if ($followers-&amp;amp;amp;gt;errors[0]-&amp;amp;amp;gt;code&amp;amp;amp;lt;&amp;amp;amp;gt;""){
            echo "Error ".$followers-&amp;amp;amp;gt;errors[0]-&amp;amp;amp;gt;code.": ".$followers-&amp;amp;amp;gt;errors[0]-&amp;amp;amp;gt;message;
        }
    $all_followers[]=$followers;
    $cursor = $followers-&amp;amp;amp;gt;next_cursor_str;
    }
    unset ($connection);
    return $all_followers;
}

Leer todos los miembros de una lista de Twitter

            $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);

 

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.

    $query = array('q' =>$query,'count' => 20, 'result_type' => 'recent');
    $results = $connection->get('search/tweets', $query);
    $tweets = $results->statuses;
    foreach($tweets as $tweet) {
        ...
    }

Operaciones con Tweets

Leer los últimos tweets de una cuenta

       	$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);

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.

    $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>";

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.

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Cargando…
No Comments

Deja un comentario

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies