Skip to main content

Qué es Laravel Socialite

Laravel Socialite es el paquete oficial para implementar de forma sencilla el login social con OAuth 2.0. Soporta los principales proveedores (GitHub, Google, Facebook, X (Twitter), LinkedIn…) y reduce a unas pocas líneas la implementación de un flujo OAuth complejo. Proveedores soportados de fábrica:

Flujo del login social


Instalación

Añade el paquete con Composer.
Al actualizar Socialite a una versión mayor, consulta siempre la guía de actualización.

Configuración

config/services.php

Añade el client ID, el secret y la URL de callback de cada proveedor en config/services.php.
Si redirect es una ruta relativa, se resolverá automáticamente a una URL completa.

.env

Gestiona las credenciales mediante variables de entorno. Ejemplo con GitHub:
En el caso de GitHub, crea una OAuth App en GitHub Developer Settings para obtener el client ID y el secret.

Flujo de autenticación

Rutas

Se necesitan dos rutas: una para redirigir y otra para el callback.

Guardar el usuario e iniciar sesión

En el callback, recupera la información del usuario, guárdala y autentica.
Para usar updateOrCreate así, la tabla users debe tener la columna github_id. Consulta el ejemplo de migración más abajo.

Información del usuario

El objeto devuelto por user() expone la información con estas propiedades y métodos.

Obtener el usuario a partir de un access token

Si ya tienes el token, obtén el usuario con userFromToken().

Modo stateless

Para APIs sin cookies de sesión, desactiva la verificación de estado con stateless().

Integración con la base de datos

Migración

Añade columnas de login social a la tabla users.

Soportar múltiples proveedores con una columna provider

Para gestionar varios proveedores en la misma tabla, se suele usar el patrón provider + provider_id.
Pasa el nombre del proveedor dinámicamente en el callback.

Vincular con usuarios existentes

Si quieres asociar la cuenta social con un usuario ya registrado con el mismo email, búscalo por correo y actualiza los datos.

Scopes y opciones

Añadir scopes

Con scopes() añades scopes adicionales.
Con setScopes() reemplazas por completo los scopes existentes.

Parámetros adicionales

Con with() añades parámetros a la petición de redirección.
No pases palabras clave reservadas como state o response_type mediante with().

Tokens de bot de Slack

Para generar tokens de bot de Slack, usa asBotUser().

Pruebas

Socialite proporciona utilidades de mock para probar el flujo OAuth sin peticiones reales al proveedor.

Test de la redirección

Test del callback

Pásale a fake() un usuario para mockear la respuesta del proveedor. Crea el usuario falso con User::fake().
Por defecto se establecen valores falsos de token OAuth. Puedes sobrescribirlos pasando atributos extra a fake().
Para OAuth 1, usa la clase Laravel\Socialite\One\User en el fake.

Cómo crear un proveedor personalizado

Si necesitas un proveedor que no está entre los integrados, la forma oficial es registrar un driver personalizado con Socialite::extend(). SocialiteManager hereda de Illuminate\Support\Manager, así que se extiende con el mismo mecanismo que otros drivers de Laravel.
Para más detalle sobre el patrón Manager y extend(), consulta la explicación de la clase Manager.

1. Crear la clase del proveedor

Extiende Laravel\Socialite\Two\AbstractProvider e implementa los cuatro métodos abstractos.
Rol de cada método:

2. Registrarlo en un service provider

En el boot() de AppServiceProvider, registra el driver con Socialite::extend().

3. Añadir la configuración

4. Usarlo como cualquier otro proveedor

Ya se usa con la misma API que los proveedores integrados.
Considera también los paquetes de terceros que extienden Socialite de esta manera oficial mediante extend().

Paquetes relacionados

Extensiones de Socialite publicadas por los mantenedores de este sitio. Todas siguen la forma oficial usando Socialite::extend(), así que basta con añadir la configuración a config/services.php.

LINE

LINE SDK para Laravel. Login OAuth con Socialite y también integración con Messaging API.

Bluesky

Integración con AT Protocol (Bluesky). Soporta autenticación OAuth y publicación de posts.

Discord

Login con Discord OAuth2.

Threads

Integración con Meta Threads. Soporta autenticación OAuth y la API de publicación.

Amazon

Login con Amazon vía OAuth.

Mastodon

Login OAuth con instancias de Mastodon.

WordPress

Login OAuth con WordPress.com y WordPress autoalojado.
Última modificación el 13 de julio de 2026