Explicamos cómo hacer un cliente de Twitter en PHP. Comenzamos el desarrollo del sistema de autenticación del usuario en el API de Twitter y el almacenamiento de sus datos de sesión.
Construir un cliente Twitter es relativamente sencillo si utilizamos una librería para comunicar con Twitter, como la clase Twitter de PHP que explicamos en artículos anteriores. No obstante, para simplificar las cosas iremos poco a poco, agregando funcionalidades a lo largo de diversos artículos. Ahora comenzaremos con la creación de un sistema para hacer login en Twitter y almacenar los datos de acceso en variables de sesión.
Autenticación en el API de Twitter
La mayoría de las cosas que vamos a querer realizar con el API de Twitter en este cliente requieren que un usuario tenga iniciada la sesión en Twitter, utilizando los mismos datos de login que los que usa en la red social. Por ello vamos a comenzar reduciendo el script a lo relacionado con el login en Twitter.
El cliente lo crearemos en un único archivo PHP con la siguiente lógica principal:
Comenzamos por el inicio de sesión PHP.
session_start();Si recibimos los datos de autenticación por POST, los guardaremos en variables de sesión
if($_POST){
//recibo datos de formulario
$_SESSION["usu_twitter"] = $_POST["usuario"];
$_SESSION["pwd_twitter"] = $_POST["clave"];
}
Cada vez que se acceda a la página comprobaremos si tenemos datos de autenticación en las variables de sesión.
//compruebo que tengo variables de sesión con el nombre y contraseña
if(!$_SESSION["usu_twitter"] || !$_SESSION["pwd_twitter"]){
//no hay variables de sesión
muestra_formulario_login();
}else{
//accedo a Twitter con esos datos de autenticación
//... resto de acciones del cliente Twitter
}
Si no había variables de sesión, mostraremos un formulario para el login. Si había, podemos intentar acceder a Twitter con esos datos y realizar acciones para dar vida a nuestro cliente Twitter.
La autenticación en Twitter la realizamos por medio de la librería PHP Twitter Class, con un código como este:
$twi_user = new Twitter($_SESSION["usu_twitter"],$_SESSION["pwd_twitter"]);
//compruebo si hay conexión con el API de Twitter
if($twi_user->test()){
//Hay conexión con Twitter
//compruebo si el login de usuario/contraseña es correcto
if ($twi_user->verifyCredentials()){
//Usuario válido, Ya hemos iniciado el acceso al API
}else{
//Usuario no existente. No podemos acceder con ese usuario
}
}else{
//no hay conexión con el API. Verifica tu conexión a Internet
}
Con esto ya tenemos una idea básica sobre la lógica de autenticación que vamos a poner en práctica en nuestro cliente Twitter.
Código del cliente Twitter hasta el momento
Aparte del proceso de autenticación, nuestro cliente Twitter tiene otra serie de detalles que no tienen tanto que ver con la librería del API de Twitter, y más bien con el desarrollo de aplicaciones PHP en general. Al código anterior para esta primera versión del cliente Twitter hemos incorporado un poco de estilos CSS, un botón para cerrar la sesión, un par de funciones para escribir la cabecera del cliente y el pie, etc.
<?php
/**************************************************
FUNCIONES
**************************************************/
function muestra_formulario_login($datos = array("usuario" => "", "clave" => "")){
echo '<form action="' . $_SERVER["PHP_SELF"] . '" method="post">';
echo '<div class="cajaform">';
echo '<div class="titcajaform">Autentícate en twitter</div>';
echo '<div class="cuerpocajaform">';
echo '<div class="nombrecampo">';
echo 'Nombre:';
echo '</div>';
echo '<div class="campo">';
echo '<input type="text" name="usuario" class="campotexto" value="' . $datos["usuario"] . '">';
echo '</div>';
echo '<div class="nombrecampo">';
echo 'Clave:';
echo '</div>';
echo '<div class="campo">';
echo '<input type="password" name="clave" class="campotexto" value="' . $datos["clave"] . '">';
echo '</div>';
echo '<div class="campo">';
echo '<input type="submit" value="Entrar">';
echo '</div>';
echo '</div>';
echo '</div>';
}
function cabecera_html($datos = array('titulo'=>'Cliente twitter')){
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>' . $datos["titulo"] . '</title>
<link rel="STYLESHEET" type="text/css" href="estilo-cliente-twitter.css">
</head>
<body>
<h1>' . $datos["titulo"] . '</h1>
';
}
function pie_html(){
echo '
<div id="pie">
<a href="' . $_SERVER["PHP_SELF"] . '">Home</a>
</div>
</body>
</html>
';
}
function salir(){
$_SESSION["usu_twitter"] = "";
$_SESSION["pwd_twitter"] = "";
session_destroy();
}
/**************************************************
PAGINA PROCESO
**************************************************/
//incluyo la librería para trabajo con el API de Twitter
//http://classes.verkoyen.eu/twitter/
include "twitter.php";
//inicio la sesión PHP
session_start();
//comienzo a escribir la página
cabecera_html();
//si quieren terminar la sesión
if ($_GET["accion"]=="salir"){
salir();
}
//Si recibimos los datos de autenticación por POST, los guardaremos en variables de sesión
if($_POST){
//recibo datos de formulario
$_SESSION["usu_twitter"] = $_POST["usuario"];
$_SESSION["pwd_twitter"] = $_POST["clave"];
}
//compruebo que tengo variables de sesión con el nombre y contraseña
if(!$_SESSION["usu_twitter"] || !$_SESSION["pwd_twitter"]){
//no hay variables de sesión
muestra_formulario_login();
}else{
//tengo variables de sesión de usuario y contraseña
//creo el usuario de twitter con el nombre de usuario y contraseña de la sesión
$twi_user = new Twitter($_SESSION["usu_twitter"],$_SESSION["pwd_twitter"]);
//compruebo si hay conexión con el API de Twitter
if($twi_user->test()){
echo "<br>Con conexión con Twitter.";
//compruebo si el login de usuario/contraseña es correcto
if ($twi_user->verifyCredentials()){
echo '<div class="mensaje">Usuario de twitter autenticado correctamente - <span class="finaliza"><a href="' . $_SERVER["PHP_SELF"] . '?accion=salir">Finaliza sesión</a></span></div>';
}else{
echo '<div class="mensajefallo">Usuario de twitter NO autenticado</div>';
muestra_formulario_login(array("usuario" => $_SESSION["usu_twitter"], "clave" => $_SESSION["pwd_twitter"]));
}
}else{
//no había conexión con el api de twitter
echo '<div class="mensajefallo">Sin conexión con Twitter</div>';
}
}
pie_html();
?>
Para que funcione, recordar que es necesario tener la librería Twitter Class PHP y asignarle la ruta a ese archivo en esta línea de include:
include "twitter.php";
Podemos descargar el código PHP de este ejemplo, junto con la hoja de estilos que vamos a utilizar.
La verdad es que sólo con el módulo de autenticación no sirve para mucho este cliente web, por lo que puedes pasar al siguiente artículo, donde veremos cómo mostrar los últimos mensajes de los usuarios que sigues en Twitter.
Miguel Angel Alvarez
Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...