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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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
1
# 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.
1
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