Actualizar Twitter a traves de PHP y OAuth
Categorías: Tutoriales - Tags: oauth, twitterHasta hace poco Twitter permitía la actualización de status a través de un método sencillo mandando usuario , contraseña y mensaje de una sola vez a través de una sencilla función. Hoy en día esto ya no es así y el único modo de interactuar con la API de Twitter es usando OAuth
El método antiguo:
function postToTwitter($mensaje){ $host = "http://twitter.com/statuses/update.xml?status=".urlencode($mensaje); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $host); curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERPWD, "Usuario:password"); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); curl_setopt($ch, CURLOPT_POST, 1); $result = curl_exec($ch); // Look at the returned header $resultArray = curl_getinfo($ch); curl_close($ch); if($resultArray['http_code'] == "200"){ $twitter_status='Tu mensaje se envio!'; } else { $twitter_status="Error "; } return $twitter_status; } |
A partir de ahora tenemos que usar OAuth para que nuestros usuarios se autentifiquen de forma segura en Twitter o mejor dicho en nuestra aplicación de Twitter.
Pero que pasa cuando no necesitamos que usuarios interactuen con Twitter sino más bien lo único que queremos es actualizar nuestro propio Twitter por ejemplo con los nuevos artículos de nuestro blog. En este caso OAuth resultaría muy tedioso ya que no necesitamos autentificarnos cada vez que queremos publicar un nuevo twitter, si no más bien obtener un ACCESS_TOKEN que no expire y nos sirva para siempre.
Usar Twitter OAuth + PHP para actualizar tu status
Lo primero que necesitamos es crear una aplicación en Twitter Apps . Al crear la aplicación debemos asegurarnos de elegir Client y de dar permisos Read & Write (lectura y escritura). Los demás campos no son importantes ya que no usaremos esta aplicación con usuarios. Una vez creada la aplicación obtendremos el Consumer Key y Consumer Secret .El access token (oauth_token) lo podemos ver si hacemos click en My Access Token
Lo segundo es bajar la librería twitteroauth de Abraham y subir a tu servidor los archivos OAuth.php y twitteroauth.php
Por último en tu archivo PHP debes incluir las siguientes funciones:
require('twitteroauth.php'); //incluir la librería define('_CONSUMER_KEY','tuConsumerKey'); //La obtenes en el paso 1 define('_CONSUMER_SECRET','tuConsumerSecret'); //La obtenes en el paso 1 define('_OAUTH_TOKEN','tuOAuthToken'); //La obtenes en el paso 1 define('_OAUTH_TOKEN_SECRET','tuOAuthTokenSecret'); //La obtenes en el paso 1 $bit=tinyurl($link); //reducimos el link con la api de bit.ly $quedan=(140-strlen($bit))-4; // calculo los caracteres restantes que me quedan para publicar restando los puntos suspensivo $mensaje=substr($mensaje,0,$quedan).' ...'.$bit; // corto el mensaje en caso de que sea muy largo //declaramos la función que realiza la conexión a tu aplicación de twitter function getConnectionWithAccessToken() { $connection = new TwitterOAuth(_CONSUMER_KEY, _CONSUMER_SECRET,_OAUTH_TOKEN, _OAUTH_TOKEN_SECRET); return $connection; } //Realizamos la conexión $connection = getConnectionWithAccessToken(); //Publicamos el mensaje en twitter $twitter=$connection->post('statuses/update', array('status' =>utf8_encode($mensaje))); //Función para acortar URL con bit.ly . Primero debemos registrarnos en http://bit.ly para obtener clave api y usuario function tinyurl($url_larga){ $tiny = "http://api.bit.ly/v3/shorten?login=TuUsuario&apiKey=tuClaveApi&format=txt&longUrl=".$url_larga; $sesion = curl_init(); curl_setopt ( $sesion, CURLOPT_URL, $tiny ); curl_setopt ( $sesion, CURLOPT_RETURNTRANSFER, 1 ); $url_tiny = curl_exec ( $sesion ); curl_close( $sesion ); return($url_tiny); } |
Resumiendo:
- Creamos aplicación en Twitter Apps
- Elegimos Client como Application type y le damos permisos de Read & Write
- Obtenemos Consumer Key , Consumer Secret , Access Token(OAuth access token) y Access Token Secret(Oauth token secret)
- Descargamos la librería twitteroauth.php y oauth.php desde aquí y los subimos al server
- Por último creamos el mensaje y la url corta para actualizar nuestro estado.
Espero que hayan entendido bien el tutorial porque la verdad lo hice corriendo y con la comida en el horno xD . Cualquier duda dejen sus comentarios. Saludos!!
UPDATE 1: Cometí algunos errores al escribir el código del tutorial. Estas lineas :
1 2 3 | function getConnectionWithAccessToken() { $connection = new TwitterOAuth('_CONSUMER_KEY', '_CONSUMER_SECRET',$oauth_token, $oauth_token_secret );return $connection; } |
Hay que cambiarlas por las siguientes:
1 2 3 4 | function getConnectionWithAccessToken() { $connection = new TwitterOAuth(_CONSUMER_KEY, _CONSUMER_SECRET,_OAUTH_TOKEN, _OAUTH_TOKEN_SECRET); return $connection; } |
Yo ya lo corregí en el tutorial, pido mil disculpas , pero como comente en su día este post lo hice bastante apurado.
UPDATE 2: Para los que obtienen el error de [error] => Incorrect signature al usar caracteres especiales como acentos (á,é ,etc) deben realizar el siguiente cambio.
Cambiando esta linea:
1 | $twitter=$connection->post('statuses/update', array('status' =>$mensaje)); |
Por:
1 | $twitter=$connection->post('statuses/update', array('status' =>utf8_encode($mensaje))); |
También cree una aplicación para mi cuenta de twitter antigua, así pueden probar que en realidad funciona y mandar un mensaje y url. La página en cuestión es http://masquewordpress.com/ejemplos/actualizar-twitter-php-oauth/
Pueden ver su mensaje en mi vieja cuenta de twitter.
O pueden seguirme en mi nueva cuenta







Pingback: Como integrar Twitter @anywhere en 5 minutos | Timersys - Tutoriales, recursos web, JQuery y PHP, Wordpress , twitter y muchos recursos más
Pingback: 12 Trucos para sacarle más jugo a tu Wordpress | Timersys - Tutoriales, recursos web, JQuery y PHP, Wordpress , twitter y muchos recursos más
Pingback: Cómo actualizar una cuenta de Twitter mediante PHP y OAuth: aplicación para publicar en el timeline de un usuario | voragine.net