Os traemos este breve tutorial para aprender a autenticar usuarios con Twitter OAtuh 2.0, en este caso, emplearemos Laravel 7 como Framework, pero serviría cualquier otro Framework PHP o “PHP a pelo”.

Al terminar este tutorial tu aplicación podrá autenticar a un usuario de Twitter y publicar un tweet en su nombre y otras muchas cosas. Ésto último es posible gracias a la Twitter API 1.1.

Cómo autenticar usuarios con Twitter OAuth
Cómo autenticar usuarios con Twitter OAuth y Laravel

Para nuestro ejemplo, haremos que tu aplicación haga Retweet a un tweet mio. 👇👇👇👇

Me haría ilusión 😘 que no cambiases ese comportamiento la primera vez para que hagas RT a mi tweet, que será éste de abajo; así, por cada RT sabremos que una persona ha seguido este tutorial. 😁

Qué necesitamos

Antes de empezar este tutorial es necesario que te asegures de tener listo lo siguiente:

  • Una app de Twitter. Si entras aquí: https://developer.twitter.com/en/apps ¿te sale alguna? Si no tienes una ya creada para trastear deberías crear una, y quizá tengas que solicitarle a Twitter una cuenta de desarrollador. Todo eso lo puedes hacer desde la url de arriba pero no es inmediato. Vuelve cuando lo tengas.
  • Una instalación limpia de Laravel, en su documentación tiene lo que necesitas.
  • Un entorno de preproducción o un entorno local conectado a internet y con un dominio apuntado desde tu máquina al servidor local.
  • Partimos de que tienes ya un entorno montado y que el dominio desde el que accedes es twitter.faus.to (porque es mi ejemplo). Es decir, accederás al laravel desde twitter.faus.to en tu navegador.

Qué es y para qué sirve OAuth

OAuth es un protocolo abierto y estándar para autenticación de aplicaciones multidispositivo.

Cuando das al típico botón “Conectarme con Google”, o con Github, o con Facebook, etc… estás usando este tipo de autentificación de usuario.

Sirve para que una aplicación haga cosas en nombre de un usuario en otra aplicación. Es así como puedes programar Tweets desde Hootsuite por ejemplo.

¿Qué puedes hacer con una autorización OAuth?

Muchas de estas acciones ya hay aplicaciones en internet que las hacen, podrías por ejemplo:

  • Publicar tweets automáticos.
  • Seguir o dejar de seguir a usuarios (por ejemplo, dejar de seguir a bots conocidos).
  • Automatizar Follow por Follow (mala idea, no lo hagas).
  • Borrar todos los tweets del usuario, o ciertos tweets…

Como ves, otorga tanto poder sobre la cuenta del usuario como te esté dispuesto a dar, así que úsalo con cuidado.

Flujo de OAuth

  1. Tu aplicación se conecta y pide permisos al usuario.
  2. Si el usuario acepta, se genera un token.
  3. Con ese token tu aplicación se puede conectar en nombre del usuario.

Caducidad de los Token

Los token no caducan hasta que el usuario no elimina la aplicación de su cuenta, por lo que se pueden almacenar para volver a utilizar.

Crear y obtener credenciales de aplicación de Twitter

Entramos en Twitter Developers.

Arriba a la derecha hay un botón de crear app. Si no tienes cuenta de desarrollador ese botón estará deshabilitado y deberás pedir que te den permisos de desarrollador.

Crear APP Twitter

Rellena todos los campos obligatorios y vamos a centrarnos en algunos que vamos a necesitar ahora:

Estos campos deben contener las urls desde las que accedes a tu Laravel

Estas dos urls son importantes porque son a dónde la aplicación devolverá el tráfico. Debes apuntar a la url de tu instalación, si estás en un servidor local con un dominio como localhost, pon ese, simplemente asegúrate de cambiarlo aquí antes de subirlo a producción.

Una vez creada tendremos tendremos una vista con “App details”, “Keys and Tokens” y “Permissions”. Generamos los tokens y los copiamos. Nos interesan API Key y API Key Secret. Los copiamos y guardamos.

Keys and tokens

Ahora vamos a Access permission y seleccionamos el tipo de acciones que va a realizar nuestra aplicación en nombre del usuario. En este caso hacer un retweet se considera escribir así que seleccionamos:

Read and write.

Muy bien, ya tienes tu aplicación lista.

Programando la autenticación de usuarios con Twitter con Laravel

Antes de nada aclarar que no vamos a vincular los usuarios de Laravel con Twitter ni nada por el estilo. Vamos a hacer una aplicación mínima para hacer un retuit a un tweet.

Librería TitterOAuth

Lo primero que vamos a hacer es instalar la librería más popular para interactúar con la API de Twitter con PHP, TwitterOAuth de Abraham

La instalamos con Composer:

composer require abraham/twitteroauth

Creamos un controlador

Con artisan o manualmente crea un controlador, aquí con artisan:

php artisan make:controller TwitterController 

Deberías tener algo así:

<?php

namespace AppHttpControllers;
use AbrahamTwitterOAuthTwitterOAuth;

use IlluminateSupportFacadesConfig;

use IlluminateHttpRequest;

class TwitterController extends Controller
{
    
}

Añadimos constantes a nuestro Laravel

En el archivo .env y example.env añadimos las siguientes líneas con los datos de vuestra aplicación de Twitter:

Archivo .env

CONSUMER_KEY=
CONSUMER_SECRET=
URL_LOGIN=
URL_CALLBACK=

En el .env pondremos los datos que obtuvimos al crear la aplicación.

Config para cargar constantes

Para tomar en Laravel las constantes del .env debemos crear el archivo en config/twitter.php con el siguiente contenido.

Creamos las dos funciones que harán el trabajo

Reemplazamos el código del controlador TwitterController por el siguiente código:

Añadimos las rutas

Creamos las rutas para los dos métodos que acabamos de crear, tienen que corresponderse con las urls que pusiste en la aplicación.

Route::get('/twitter_login/', 'TwitterController@twitter_login');
Route::get('/twitter_callback/', 'TwitterController@twitter_callback');

Explicación del flujo de OAuth y Twitter

Hemos creado dos rutas: “twitter_login” y “twitter_callback“: la primera es la que redirige a Twitter para objeter autorización del usuario; la segunda es la que recoge el token ya aprobado y hace el retweet.

Por último “twitter_callback“, en el caso de que no tenga autorización correcta, devuelve al usuario a la pantalla de login.

Aquí tienes el código completo del tutorial terminado: https://github.com/faustorm/laravel-twitter-oauth

Para escribir este tutorial me he basado en éste de Anton Bagaiev en Tutsplus, así que le dejo un enlace “dofollow”.

La entrada Cómo autenticar usuarios con Twitter OAuth 2.0 y Laravel 6 se publicó primero en SEO para Google.

FAUSTO