Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Cómo actualizar una cuenta de Twitter mediante PHP y OAuth: aplicación para publicar en el timeline de un usuario

Imago voragine.net

Para actualizar una cuenta de Twitter desde una web cualquiera hay crear una aplicación que utilice el sistema de autentificación OAuth. Para ello hay que registrarla en la página de desarrolladores de Twitter. Para comunicarse con Twitter a través de OAuth se pueden usar varias librerías ya preparadas; en este caso usaremos twitteroauth de Abraham, que consiste en dos archivos: OAuth.php y twitteroauth.php.

Primero registramos la aplicación en la base de datos de Twitter. Es importante configurar el acceso de la aplicación con permisos de lectura y escritura, en la pestaña Settings. Luego generamos las cuatro claves que validarán la aplicación, que luego hay que añadir al código PHP: consumer key, consumer secret, access token y access token secret.

Después, reunimos en un archivo PHP los trozos de código que necesitamos. Incluimos la librería twitteroauth y validamos la aplicación con las cuatro claves que hemos generado:

require('twitteroauth.php'); // incluimos la librería para comunicarnos con twitter
define('_CONSUMER_KEY','tuConsumerKey'); // consumer key
define('_CONSUMER_SECRET','tuConsumerSecret'); // consumer secret
define('_OAUTH_TOKEN','tuOAuthToken'); // access token
define('_OAUTH_TOKEN_SECRET','tuOAuthTokenSecret'); // access token secret

Creamos una función que realizará la conexión:

function getConnectionWithAccessToken() {
  $connection = new TwitterOAuth(_CONSUMER_KEY, _CONSUMER_SECRET,_OAUTH_TOKEN, _OAUTH_TOKEN_SECRET);
  return $connection;
}

Ejecutamos la conexión:

// Ejecutamos la conexión
$connection = getConnectionWithAccessToken();

Publicamos en twitter, utilizando la conexión:

//Publicamos el mensaje en twitter
$mensaje = "Publicando un mensaje en una cuenta de Twitter utilizando OAuth.";
$twitter= $connection->post('statuses/update', array('status' => $mensaje) );

No es necesario preocuparse por los enlaces incluidos en el mensaje ya que Twitter los acortará convenientemente él solito. Lo que sí que tenemos que tener en cuenta es que si la hora de nuestro servidor está mal configurada obtendremos un error diciéndonos que hay un desfase de tiempo demasiado grande, y el tweet no se publicará:

Error Timestamp out of bounds

Para detectar éste o cualquier otro error conviene hacer un echo de la variable $twitter, que almacenará los errores en caso de producirse, cuando ejecutemos el archivo PHP.

Más información:

15 comentarios

  1. Por favor, puede eliminar mi comentario anterior?

    1. Comentario eliminado, Zabdiel.

    • Por hars •

    Hola me puede pasar los archivos ingharols@hotmail.com

  2. ¿Qué archivos quieres hars? Si te refieres a los que hacen falta para actualizar una cuenta de twitter, te diré que sigas los pasos que explico en el artículo, porque hay pasos a seguir que no tienen nada que ver con los archivos. Por otro lado, los archivos PHP necesarios para conseguir publicar en una cuenta de twitter desde una web externa varían en función de lo que quieras hacer exáctamente y cómo quieras integrar esto en tu web.

    Si tienes dudas más concretas puedo responderte.

    • Por jt martin •

    baje la libreria abraham-twitteroauth-052b55e y siguiendo tus pasos no me deja hacer la conexión lo que quiero es dar de alta en mi sistema web para que puedan loguearse dentro de twitter mi proyecto web es en jsp y lo estoy haciendo en eclipse debido a que no soy bueno en java, propuse hacer esta parte en php

    1. Hola jt martin, no acabo de entender lo que quieres. Creo que es permitir a tus usuarios hacer login usando su cuenta de twitter. Si es así, puedes encontrar más información sobre cómo conseguirlo en el github de twitteroauth.

      Este post de mi blog cuenta cómo publicar remotamente en una cuenta de twitter, lo que requiere autenticarse. Pero no explica explícitamente cómo hacer el inicio de sesión con twitter.

    • Por Luisinho

    Muchas gracias!!! He probado con varios tutoriales, y el tuyo funcionó a la primera ;)

    1. De nada, Luisinho. Me alegro de que te sirviera.

    • Por Alberto

    Me fui muy útil para mi web, ahora puedo publicar las noticias y a la vez los tuits! Lo emplearé en más de una página seguro :)

  3. ok , esto funciona si yo quiero twittear desde PHP a MI cuenta twitter.
    Pero yo quiero twetear a “n” cuentas twitter , desde PHP, teniendo por supuesto , los codigos de usuario de la cuentas en cuestión.

    Tienes alguna idea ???

  4. Hola Mario,

    justo hemos desarrollado una aplicación, que se llama crtweet que permite twittear varias cuentas introduciendo un código en el tweet que quieres retuitear.

    No es esto lo que buscas, pero para conseguir hacer esto la aplicación tiene que tener el derecho y la capacidad de tuitear en varias cuentas.

    Échale un ojo: http://crtweet.com

    Para desarrollarla usamos la librería twitteroauth de abraham.

    Pronto subiré el código de crtweet a github: http://github.com/skotperez/cRT, por si quieres usarlo.

    • Por Carlos •

    Hola. Funciona perfectamente en localhost sobre Xammp, pero no en la web. Debe actualizarse el código con algo?

    1. Hola Carlos,

      sí, debes actualizar los datos de la aplicación que registraste en dev.twitter.com/app, ya que la URL desde la que se comunica la aplicación cambia cuando lo subes a tu servidor en la web.

      Tendrás que generar otra vez los token y definir el nuevo callback file.

    • Por Julio Sánchez •

    Hola,

    hasta el momento he conseguido mostrar todos los tweets que he publicado con mi cuenta usando esto:

    $connection->get(“https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=”.$twitteruser.”&count=”.$notweets);

    Pero me gustaría saber si hay alguna forma de mostrar todos los tweets que contengan mi nombre de usuario @twitteruser y que hayan publicado otros usuarios.

    Muchas gracias

    1. Hola Julio,

      puedes mostrar todos los tuits en los que han mencionado al usuario @twitteruser sin recurrir a oauth, sencillamente usando los widgets de Twitter.

      Si quieres usar oauth por alguna razón, en la documentación de la API de Twitter tienes la información de cómo obtener una timeline de menciones.

Dejar un comentario

*
*

 

No hay trackbacks