dominios y alojamiento web en hostalia

Enviar mensajes a Twitter desde PHP y el API de Twitter

25 de marzo de 2010
Valoración del artículo:
Cómo enviar mensajes a una cuenta de Twitter desde tus propios scripts PHP y utilizando el API de Twitter.
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
Seguramente que la persona que lea el Manual de trabajo con el API de Twitter desde PHP estará interesada por la funcionalidad que vamos a mostrar a continuación, pues es uno de los pasos más fundamentales de comunicación con el servicio de microbloging. Así que pongámonos manos a la obra y expliquemos cómo enviar mensajes con nuestra cuenta de Twitter desde un script PHP.

Como vimos anteriormente, trabajar con el API de Twitter resulta bastante sencillo cuando utilizas alguna clase PHP que sirva de puente entre el API y tus scripts PHP. Así que nosotros para explicar el API de Twitter estamos utilizando la Twitter Class, un script de código abierto que ya hemos comentado en el artículo Utilizar una librería PHP para trabajar con el API de Twitter.

El paso que queremos explicar, usando la librería Twitter Class, consta de pocas líneas de código. Realmente veremos que el propio envío del mensaje a Twitter es una única sentencia PHP, una llamada al método updateStatus() de la mencionada clase, aunque nosotros hemos adornado este script para darle un poco más de empaque y de paso aprender algunas otras cosas nuevas del API. En concreto, veremos que existen algunos métodos interesantes, implementados en la clase PHP que estamos utilizando, para saber si tenemos conexión con el API de Twitter y si el usuario que hemos utilizado está correctamente autenticado.

Métodos de Twitter Class que vamos a utilizar

Estos son los métodos que no conocemos todavía de la librería PHP para trabajo con Twitter y que vamos a utilizar.

test():
Este método sirve para comprobar si existe comunicación con el API de Twitter. No recibe parámetros y simplemente devuelve un boleano indicando si hay o no conexión.

verifyCredentials():
Este método tampoco recibe parámetros y así como el anterior, devuelve un boleano con el que sabremos si el usuario que ha iniciado sesión con el API está correctamente autenticado. Como podemos imaginar, devuelve true si el login y contraseña corresponden con los de un usuario de Twitter. False si la autenticación no tuvo éxito.

Nota: Recordemos que la autenticación con el API de Twitter se realiza con los datos que se envían al constructor de la clase Twitter Class.
$obj_twitter = new Twitter("usuario","clave");

updateStatus():
El método updateStatus() recibe como parámetro una cadena de caracteres y la envía como post en la cuenta del usuario autenticado. Es decir, envía un mensaje a Twitter con la cuenta del usuario con el que instanciamos la el objeto de la clase Twitter Class. Recordar que el mensaje debe medir como máximo 140 caracteres.

Formulario para mandar un mensaje a Twitter desde PHP

Ahora que ya conocemos los métodos con los que necesitamos trabajar en este ejemplo, veamos el script PHP que podríamos utilizar para enviar mensajes a Twitter. En esta práctica vamos a hacer un formulario que tendrá los campos de autenticación a Twitter y un textarea para escribir el mensaje a enviar.

Al enviar el formulario comprobaremos si hemos recibido los datos de autenticación, si existe conexión con Twitter y si el login del usuario se ha podido realizar correctamente. En caso que todo haya ido bien, se enviará el mensaje.

El código es el siguiente:

<html>
   <head>
   <title>Enviando mensajes a Twitter desde PHP</title>
   </head>
   <body>
      
   
<?php
if (!$_POST || $_POST["user"]=="" || $_POST["clave"]==""){
   //si no recibo datos de formulario, muestro un formulario con los datos a rellenar
   echo '
   
   <form action="' . $_SERVER["PHP_SELF"] . '" method="post">
   Usuario:
   <br>
   <input type="text" name="user">
   <br><br>
   Clave:
   <br>
   <input type="password" name="clave">
   <br>
   Mensaje (140 caracteres como máximo):
   <br>
   <textarea cols=50 rows=3 name="mensaje"></textarea>
   <br>
   <br>
   <input type="submit" value="Enviar">
   </form>
   ';
}else{
   //incluyo la clase Twitter
   include "twitter.php";
   $usuario_twitter = new Twitter($_POST["user"],$_POST["clave"]);
   
   //compruebo si hay conexión con el API de Twitter
   if($usuario_twitter->test()){
      echo "<br>Con conexión con Twitter.";
      //compruebo si el login de usuario/contraseña es correcto
      if ($usuario_twitter->verifyCredentials()){
         echo "<br>Usuario de twitter autenticado correctamente.";
         
         //ENTONCES, VOY A ENVIAR EL MENSAJE
         $usuario_twitter->updateStatus($_POST["mensaje"]);
         
         echo "<p>Mensaje Enviado!!!!</p>";
      }else{
         echo "<br>Usuario de twitter NO autenticado.";
      }
   }else{
      echo "Sin conexión con Twitter.";
   }   
}

?>

</body>
</html>

Esperamos que se entienda fácilmente con los comentarios en el código y con las explicaciones del principio del artículo.

Como se podrá ver, se comprueban varias cosas antes de mandar el post a Twitter, pero todavía lo podríamos complicar un poco más validando también si el string del mensaje no supera los 140 caracteres que permite este servicio de microblogging.

Referencias: Otro detalle que quizás mejorase todavía más este script es mostrar la cuenta de los caracteres escritos en el textarea, que hemos explicado en artículos aparte de DesarrolloWeb.com:

Esperamos que este ejemplo de trabajo con el API de Twitter haya sido de utilidad para los lectores. El siguiente paso que abordaremos será hacer un pequeño cliente de Twitter en PHP con funcionalidades básicas.

Compartir en redes sociales

Comentarios
Fueron enviados 13 comentarios al artículo
10 comentarios no revisados
3 comentarios revisados:
buen ejemplo para usar esta clase
Por: fernando
23/5/2010
Buen ejemplo para usar esta clase con twitter,

aunque acá -> if (!$_POST | $_POST["user"]=="" | $_POST["clave"]=="")
debería ser -> if (!$_POST || $_POST["user"]=="" || $_POST["clave"]=="")
Error corregido
07/6/2010
Hola! Gracias por reportarnos ese error en el script.
Ya lo hemos corregido!

pedrexh...
mismo error
28/8/2010
Warning: curl_setopt_array() [function.curl-setopt-array]: CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set in /home/a8437238/public_html/twitter.php on line 189

Me imagino que es por lo que dice Noel... Ojala pongan una solución u otra forma de lograr el uso de la api. Saludos.

Manuales relacionados
Categorias relacionadas
El autor
Últimas noticias
Donaciones
Si piensas que te hemos ayudado y merecemos tu apoyo económico...