Enviar tweets automáticamente en PHP con la API OAuth de Twitter y un Cron job

Enviar tweets automáticamente en PHP con la API OAuth de Twitter y un Cron job

Desde hace aproximadamente un mes que vengo usando la API OAuth de Twitter https://dev.twitter.com/docs/api/1.1. Para cualquier técnico o programador que tenga unos conocimientos básicos de OOP, programación orientada a objetos, podrá usar la API sin problema, es super sencillo.

A continuación explicaré todos los pasos que hay que llevar a cabo.

Crear tu aplicación en Twitter

En primer lugar lo que tendrás que hacer es crear una aplicación en Twitter. Ve al siguiente link https://dev.twitter.com/apps/new, entra con tu cuenta de Twitter.

Sigue los pasos que te indican para crear tu aplicación.

  • Introduce el nombre que deseas darle a tu aplicación. Después podrás editar y escoger otro nombre si el que has puesto no te gusta.
  • Una breve descripción, siempre puedes poner algo como “Mi super aplicación” y luego lo podrás cambiar.
  • Introduce la url de tu página.
  • La url de Callback es opcional, y la podrás completar más tarde. A parte para este ejemplo no será necesario
  • Acepta las condiciones legales y completa el captcha.

Después ya tendréis vuestra aplicación creada.

Permisos de la aplicación

Debes dar permisos de “Read and write” a tu aplicación para que puedas enviar tweets automáticos como propongo en este artículo.

Ir al menú “Settings” dentro de tu aplicación y en la sección “Application Type”, selecciona la 2ª opción “Read and Write”.

El código PHP y uso de la API OAuth

A continuación indico el código PHP que será necesario.

<?php

$consumerKey    = 'Consumer-Key';
$consumerSecret = 'Consumer-Secret';
$oAuthToken     = 'OAuthToken';
$oAuthSecret    = 'OAuth Secret';

// incluimos la librería para usar la API OAuth
require_once('twitteroauth.php');

$tweet = new TwitterOAuth($consumerKey, $consumerSecret, $oAuthToken, $oAuthSecret);

# aqui tu lógica para recoger el contenido del tweet, ya sea de tu bbdd, feed, rss o fichero

$tweet->post('statuses/update', array('status' => 'Aqui contenido de tu tweet, tambien puedes enviar urls o hashtags'));
?>

Como se puede observar es algo super simple, en la que se instancia el objeto TwitterOAuth y llamamos a un método “post” con una serie de atributos.
Para ver el listado completo de métodos y usos de la API, ir a la documentación oficial https://dev.twitter.com/docs/api/1.1.

Como indico, esto sólo es un ejemplo, al cual se le puede dar muchos usos. Puedes enviar tweets automáticamente, comprobar quien te ha dejado de seguir, seguir, dejar de seguir, crear listas, etc… la versatilidad de este ejemplo se puede adaptar a los conocimientos de cada uno o funcionalidades que se desee, siempre y cuando se pueda hacer con la API.

La peculiaridad de este ejemplo, es que al constructor del objeto pasamos como 3º y 4º parámetro los tokens de acceso manualmente, por defecto en muchas aplicaciones hay que loguearse en twitter y se genera un token que los almacenamos en sessión.
Pues bien, si esta aplicación sólo la vamos a usar nosotros, podemos incluir los token de acceso de que podemos conseguir en nuestra aplicación que hemos creado anteriormente.
Haciendo esta técnica es como conseguimos no tener que loguearnos en twitter y poder meter este archivo en un cron para que se ejecute desde un sevidor sin la necesidad de una administración manual de twitter, o por lo menos quitar parte de la carga de trabajo que conlleva administrar esta red social.

Configurar el cronjob o cron tab

Los usuarios con conocimientos de sysadmin, podrán acceder por consola y configurar el cronjob. Los usuarios que no tengan conocimientos de administración de sistemas o no se sientan valientes para entrar en la máquina, es posible que su servidor tenga algún panel de control donde configurar los crons desde algún interface web.

Una vez logueado con tu usuario en el sistema, ejecuta el siguiente comando

# crontab -e 

Y una vez que estés dentro del editor de texto introduce tu sentencia para ejecutar el archivo php. En este ejemplo voy a indicar para ejecutar el envío automáticos a Twitter cada 2 horas.

0 */2 * * * php /path/absoluto/archivo/auto-tweet/index.php

Otra idea: Puedes hacer que el cron se ejecute cada hora, y dentro del php hacer una administración mas compleja de las horas a las que se tiene que publicar.

Mi secreto: Voy a compartir mi secreto con todos, que no es más que enviar los tweets por email a bufferapp.com, y dentro de este servicio tengo configurado un horario muy concreto de cuando publicar mis tweets.

Conclusión

Con el “bot” que propongo, podemos mandar al comunity manager al carajo!! jeje… Es broma!! Administrar bien una red social es algo que lleva un cierto trabajo, depende de todo lo que queramos explotarla, y un programa como el que estoy proponiendo sólo va a hacer parte de ese trabajo, el factor humano es fundamental, por lo menos para contestar a los reply 😉

Ver y Descargar desarrollo en GitHub

https://github.com/elpeter/pv-auto-tweets

Tags de búsquedas:

twitter,twittear automaticamente cada 1 hora,auto tweetcon hastarg,enviar tweets automaticamente,twitter desde php,tweet automatico radio,php publicar automaticamente redes sociales,mandar tweets automaticos,crear cuentas de twitter automaticamente,crear php twitter,enviar tweet con imagen con php,enviar tweet con php,twitter php api,horario de trabajo php example,problem twitter oauth cron 1 1

Noticias relacionadas »

51 comentarios en Enviar tweets automáticamente en PHP con la API OAuth de Twitter y un Cron job

  1. Rodrigo
    / Responder

    Tengo una duda, como hago para no repetir el tweet? Por ejemplo si yo busco con un criterio específico (un hashtag por ejemplo) el cron job volverá a buscar y me va a traer el mismo resultado o sea que le enviaré otro tweet automáticamente?

  2. Alejandro
    / Responder

    Alguien que se dedique a desarrollar aplicaciones y quiera trabajar, necesitamos crear una app que gestione varias cuentas y que se pueda programar automáticamente. le dejo mi correo atsoberanes@gmail.com

  3. Julio
    / Responder

    Estimados, aquí se explica como publicar twitter con php y la API. Pero, como se podrá publicar un twitter con una imagen, también via php.

  4. Dani
    / Responder

    Hola Pedro,
    lo primero, muchas gracias por la info!! aunque debo estar olvidando algo porque me publica el tweet y tampoco me da ningun error.

    -he puesto el read and write en mi app
    -tokens
    -la modificación de api.twitter.com/1.1/ en twitteroauth.php

    y despues de todo esto no me publica nada en twitter!!!
    lo de cronjob no es necesario verdad???

    Muchas gracias y un saludo!!!!!

    • / Responder

      ya habían publicado la solución, es la siguiente

      En la linea 21 del twitteroauth.php tenia

      public $host = “https://api.twitter.com/1/”;

      y la correcta es:

      public $host = “https://api.twitter.com/1.1/”;

  5. / Responder

    Gracias,

    La integración funciono muy bien, con la corrección en el archivo a 1.1,.

    @asesoreduardo
    http://www.admonsis.info / CMS.Software

  6. Juan Carlos
    / Responder

    Quisiera saber porque dejo de funcional la aplicacion, funciono con 10 twes excelente y de ahi ni erro ni twitea, sera que twiiter bloquea eso?

  7. / Responder

    Estimados buendia,
    tengo un software a la venta que lo estan utilizando varias personas (software libre es decir, lo compran y pueden distribuirlo) Utiliza necesariamente php+mysql+api rest+cronjob
    Este realiza pagos de seguidores mediante Retweets, Recomendaciones y Promociones, utilizando las cuentas grandres de twitter, y fakes (todas propias de cada usuario).
    Cualquier consulta o inquietudes a german.quisbert@gmail.com directamente
    Un abrazo

    • Juan Carlos
      / Responder

      Quisiera saber como hago para que cuando en mi emisora suene una cancion se twitte automaticamente

  8. David
    / Responder

    Aupa Pedro!

    Como podrás comprobar en tus analytics, he llegado a este post desde unos 5 o 6 sitios diferentes, con lo que concluyo que algo estoy haciendo mal porque se ve que mucha gente lo ha conseguido siguiendo tu tutorial sobre esto.

    Estoy siguiendo, tengo los tokens y los archivos, y he subido a mi servidor los archivos oauth, twitteroauth e index.php.

    Al llamar directamente desde el navegador a la página no devuelve nada, y en twitter no se publica nada.

    No se donde tengo el fallo. Como a alguno que te ha comentado, también en mi twitteroauth.php, en mi caso en la linea 17, se hacia referencia a la v1, no a la 1.1. Cambiado esto y vuelto a subir al servidor, vuelvo a llamar a index con el mismo resultado.

    En detalles de la app tengo puesto que no se loggee.
    En Request uri, he probado poniendo la dirección en mi servidor del index, y dejarlo tal como está, añadirle el parametro tweet, y en request query he probado poniendo tweet, no poniendo nada…

    Alguna idea? Me resulta muy interesante y me gustaría poder conseguir esto.
    Gracias de antemano por el manual, y por lo que veo, por hacer buen feedback con la gente. Un saludo. David.

  9. Juan
    / Responder

    Tras horas buscando, os dejo la forma más fácil que he encontrado para mostrar el timeline de un usuario:

    https://github.com/davidmigloz/Twitter-Timeline

    Es muy configurable en cuanto a la información que quieres mostrar y puedes personalizar fácilmente el código html que genera. Y además, está en español.

    Un saludo

  10. / Responder

    Saludos, felicitaciones por este post, la verdad me ha interesado mucho y tengo una consulta haber si me puedes ayudar, tengo una estacion de radio online, en el reproductor se muestra el titulo de la cancion y el artista, hace poco implemente igual en la pagina unos botones que permite compartir esa informacion en twitter y facebook.. ahora todo esto lo hago con un fichero streaming.php, mi inquietud en el fichero index.php y en especial la linea $tweet->post(‘statuses/update’, array(‘status’ => ‘Aqui contenido de tu tweet, tambien puedes enviar urls o hashtags’)); como le llamaria a mi archivo?? gracias tu contestacion.

    • Juan Carlos
      / Responder

      Yo lo hice a traves de variable de php

  11. Silvio
    / Responder

    He seguido los pasos, pero no publica.

    MI duda es, y disculpen la ignorancia… de donde saca mi usuario de tw?

    Esto publicaría en nombre mio? o de quien?

    Es necesario estar logueado? O se puede hacer via cron desde cPanel?

    desde ya muchas gracias por este aporte y por la orientación que me puedan brindar.

    Silvio de Córdoba

    • Pedro
      / Responder

      Hola Silvio,

      Seguro que has seguido todos los pasos? Tienes los 4 tokens que se piden en el ejemplo? Los tienes que sacar de la aplicación.

      El usuario se saca de los últimos 2 tokens: $oAuthToken y $oAuthSecret, que sustituye las credenciales del usuario y no se tiene que hacer login.

      Una vez que lo tengas bien configurado, no tienes porque estar logueado y lo puedes meter en un cron.

  12. / Responder

    muchas gracias me fue de mucha ayuda.

    Saludos!

  13. Isaac Mena
    / Responder

    Hola Pedro vuelvo a tu articulo luego de seis meses, fijate que desde finales de julio para aca dejo de publicar tweets, sabes algo al respecto, no es cron ni mi server porque ya probe otros archivos en cron y se ejecutaron bien, sabes si twitter hizo algún cambio en su api??

    Al parecer este método ya no va, investiga al respecto a ver si a alguien le sigue funcionando…

    Saludos.

    • Pedro Ventura
      / Responder

      Hola Isaac,

      No, la versión de la API de twitter sigue siendo la 1.1 https://dev.twitter.com/docs/api/1.1 Que error te esta dando?

    • Ivan
      / Responder

      A mi me ha pasado lo mismo.No da ningun error

      • Ivan
        / Responder

        Ya funciona.En la linea 21 del twitteroauth.php tenia

        public $host = “https://api.twitter.com/1/”;

        y la correcta es:

        public $host = “https://api.twitter.com/1.1/”;

  14. Luis
    / Responder

    Hola, muchas gracias por el artículo… lo estoy probando… pero dónde descargo la librería ‘twitteroauth.php’??

    Gracias!!

  15. Marcos
    / Responder

    tienes algun ejemplo de como saber si un usuario es seguidor tuyo?. usaba este codigo que funcionaba perfectamente ¡hasta que cambio a V1.1.:
    .
    <?php
    session_start();
    $existe= "n";
    $seguidor="";

    //$trends_url = "http://api.twitter.com/1/statuses/followers/Maheso_news.json&quot;;
    $trends_url = "https://api.twitter.com/1.1/followers/ids.json?cursor=-1&screen_name=Maheso_news&count=5000&quot;;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $trends_url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $curlout = curl_exec($ch);
    curl_close($ch);
    $response = json_decode($curlout, true);
    foreach($response as $friends){
    $thumb = $friends['profile_image_url'];
    $url = $friends['screen_name'];
    $name = $friends['name'];

    //print "” . $url. “”;
    print “”;

    if ($_POST[‘idtwitter’] == $url) { $seguidor=”s”; }

    }

    if ($seguidor==”s”) {
    echo “$_POST[idtwitter] > SI EXISTE”;
    } else { echo “NO existe > $_POST[idtwitter]”; }
    unset($_POST[‘idtwitter’]);

    ?>

  16. Manuel Cabezas
    / Responder

    Saludos Pedro, como puedo hacer para tweetear un mensaje desde varias cuentas, tengo una corporacion y usamos mucho el tweets y para minimizar gastos quiero un software donde me permita enviar un mensaje desde varias cuentas agregandolas en el…

  17. Rodrigo
    / Responder

    Hola Pedro, muy bueno tu articulo. Estoy buscando la forma de saber si es posible con la API 1.1 de Twitter obtener con exactitud si solo un usuario es seguidor mio o no lo es. Tienes por ahí alguna idea? esto sin tener que estar revisando las listas de followers cada vez? Gracias.

  18. / Responder

    Voy a probarlo hoy mismo.
    Probé algo similar de forma semi-manual y tuve una cuenta sancionada 30 días por exceso de tweets, supongo. En facebook me ocurrió algo similar.
    Pero veo muy interesante este método.
    Gracias por el aporte.
    Ya os comento los resultados.

  19. esteban
    / Responder

    Hola. Estoy utilizando javascript con json para recuperar determinados twits pero la con la nueva libreria esto me quedo obsoleto.
    $.getJSON( “https://api.twitter.com/1.1/search/tweets.json?q=%23” + HashTag + “&since_id=” + auxi + “&callback=?&rpp=” + cTwett, {}, function (json)

    ¿Como deberia utilizar la nueva librería?

  20. Xisco
    / Responder

    Interesante artículo,
    Pedro, cual sería la forma para agregar geolocalización del tweet??

    Gracias,

    • Pedro
      / Responder

      Hola Xisco,

      se incluiría el parámetro long con su valor de longitud. Pero vamos esto es lo que estoy viendo ahora mismo en la documentación oficial de twtiter https://dev.twitter.com/docs/api/1.1/post/statuses/update de todas maneras a ver si en estos días puedo hacer una prueba real y te vuelvo a comentar con más detalle

      Un saludo!

  21. Alejandro
    / Responder

    Hola, he llegado aquí pero no se si es lo que estoy buscando.
    Estoy buscando la manera de que desde mi web, un usuario pueda escribir un tweet en su propio twiter. Por ejemplo que le de a un botón, se autentifique en twitter con su usuario y todo lo que escriba en mi web se retweete a su twitter.
    Con este tutorial creo que solo se consigue que escriban en el twitter de la aplicación no?
    Es posible lo que propongo?.
    Un saludo.

    • Pedro Ventura
      / Responder

      Hola Alejandro,

      El ejemplo de este artículo es muy simple pero es la base para automatizar procesos con la api de twitter.
      Efectivamente lo que propones se puede hacer, y cosas mucho más complejas. Prueba a usar este código https://github.com/dg/twitter-php tiene una breve documentación pero explican como enviar un tweet.

      Un saludo!

  22. / Responder

    Hola, a mi me funciona bien , pero loego de un dia me deja de funcionar, y no cacho porque.

  23. Carlos
    / Responder

    Hola Pedro. Gracias por el aporte. Tras descargar el código y realizar los pasos adecuados el index aparece en blanco y sin ningún request. Es válido todavía el código? Gracias de antemano. Un saludo

    • Pedro Ventura
      / Responder

      si como digo en mi artículo la lógica está vacía, ya que lo importante es el ejemplo de como usar los token y la llamada para establecer la conexión mediante la API de twitter el resto es para que cada uno lo use a su manera.
      De todas maneras, pronto escribiré un artículo con un ejemplo para realizar retweets automáticos que te podrá resultar interesante.

      • Miren
        / Responder

        me quedare pendiente de tu publicacion, y vere que puedo hacer..mas que nada para uso personal, ya que todos los servicios que hacian esto cerraron 🙁

        • Pedro Ventura
          / Responder

          creo que te envié un email hace bastante tiempo… revisa si te llegó, plz! Te comentaba algunas alternativas.

          un saludo!

      • jose
        / Responder

        Saludos, sobre el ejemplo para hacer retweets has adelantado algo ?

  24. Miren
    / Responder

    Hola

    yo usaba twiteercontentsharer pero la web cerro.

    http://www.tweetcontentsharer.com/es/ 🙁

    era buenisimo.

    agregaba un texto y un enlace y listo.

    me permitia enviar hasta 50 twiteets en modo free y por dia. en modo armndom.

    asi podia tener un post del año 2012 pero todavia valido y me aseguraba q todos los dias se twiteaba en la cuenta de mi blog.

    🙁 m quiero morir ya no hago mas tweets.

    seria buenisimo que crearas una web con un servicio asi. ellos cobraban a partir de mas de 50 tweets.

    quedo pendiente de tu accionar, ojala escuches mi clamor, ademas te puedo hacer muuy buena promocion.

  25. / Responder

    Gracias men excelente blog felicitaciones 🙂

  26. WilberRZ
    / Responder

    Exelente bro.. si me sirvio !!!

  27. Wilber Rios
    / Responder

    Gracias bro me sirvio mucho

  28. cespar
    / Responder

    Yo tengo la misma duda que pepe, si gestionas varias cuentas como puedes hacer esas operaciones utilizando oAuth? los usuarios tienen que aceptar la aplicación pero los tokens… de donde se cogen?

    Gran ejemplo, gracias.

    • Pedro
      / Responder

      Hola,

      Si es buena pregunta. Es algo que todavía no se, lo estoy investigando porque lo necesito hacer en un proyecto personal.

      En cuanto tenga una solución la colgaré.

      De lo contrario, si tu encuentras algo antes, por favor también coméntalo, vale?

      Un saludo!

  29. Pepe
    / Responder

    Hola, con este método entiendo que puedo enviar un tweet desde una cuenta relacionada a la aplicación, pero ¿Como podría hacerle para enviar tweets desde varias cuentas? (todas controladas por mi, o con permiso del usuario) ¿me podrías poner en el camino correcto? No encuentro info :(, desde ya muchísimas gracias amigo. Saludos.

  30. edadez
    / Responder

    Buen tutorial amigo,
    Una consulta,
    Estuve probando el plugin de Abraham para el OAuth, y me pide el login de twitter, entonces lo que tú enseñas acá me sirve, porque ya le doy el token en el php y no es necesario el login.
    Monté los archivos (index.php + twitteroauth.php + oauth.php) en un servidor, pero al abrir la página, obviamente no me sale nada, pero tampoco me envía el tweet.

    Sabes cuales pueden ser las posibles causas?
    Un abrazo.

    Saludos desde Chile

  31. femer
    / Responder

    como obtengo los token de otros usuarios… al llenar esos datos con los que tengo en mi app los comentarios solo aparecen en mi perfil no en el de otro… como podria hacer ahi?

  32. / Responder

    Me ha servido mucho esto gracias :))

    • Pedro Ventura
      / Responder

      Me alegro muchísimo! Cualquier duda o pregunta escribela aquí y te responderé.

      Un saludo!

  33. / Responder

    Gracias a tu post hemos integrado a nuestro CMS la posibilidad de twitear los nuevos post automáticamente

  34. Jaime
    / Responder

    ¿ No entiendo y como genero el auto-tweet.php ?

    • Pedro Ventura
      / Responder

      Hola Jaime,

      En github tienes todo el desarrollo https://github.com/elpeter/pv-auto-tweets.
      Lo del auto-tweet.php es algo que no he puesto muy claro, en realidad el código sería index.php, pero bueno esto tampoco es algo muy grave.

      Tendrías que descargar todo el código de github, y adaptar el desarrollo a tus necesidades. Después configurar un cronjob, no se si tienes conocimientos de linux para hacer esta tarea.

      Ya me sigues contando si tienes dudas.

      Un saludo!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

10$ gratis con Digital Ocean »

Este blog está funcionando con Digital Ocean,
para todos los lectores 10$ gratis! para probar el cloud a través del siguiente enlace.


Ir a Digital Ocean

¡Comparte este artículo! »

Sígueme en Facebook »

  • sdfgsdf sdfgsdf (2 semanas)
    dsfasd sdfas asdf asdfa asdfasdfafa asdfsdewtr fdsfsdfasfwewesfsd sdf ds
  • sdfgsdf sdfgsdf (2 semanas)
    sdfgsdf sdfgsdfgsdf sdfg
  • Luis (1 mes)
    Hola Pedro, muchas gracias por transmitirnos tu conocimiento. Te comento…
  • Senado.es: Vuelta al año 2000 - Yorokobu (1 mes)
    […] desarrollador Pedro Ventura explica en su blog cómo alternativas…
  • Pedro Ventura (1 mes)
    Hola Edwer La manera de como hacerlo viene explicada en…
  • Rodrigo (1 mes)
    Tengo una duda, como hago para no repetir el tweet?…

Suscríbete al newsletter »

Proporciona tu correo electrónico a continuación y recibe las últimas noticias! Funciona con Feedburner de Google

Archivo »

Leer entrada anterior
Obtener datos de usuarios únicos por país en Google Analytics

Esta semana un compañero del equipo de Marketing me ha pedido que le echara una mano a sacar una métrica...

Cerrar