¿QUÉ ES LARAVEL SOCIALITE?

Laravel Socialite es un wrapper alrededor de OAuth que elimina todo el código reutilizable que normalmente se tendría que escribir. Con solo unas pocas líneas de código se puede:
  • Redirigir al usuario al proveedor, como Google, GitHub, Facebook, LinkedIn, X/Twitter, GitLab, Slack, Bitbucket, Twitch, etc.
  • Recibir y procesar los datos del usuario
  • Crear o vincular la cuenta en tu aplicación

Instalación con Composer

Ejecutar el siguiente comando en la raíz de tu proyecto Laravel:

composer require laravel/socialite

Publicar la configuración, es opcional pero recomendado

php artisan vendor:publish --provider="Laravel\Socialite\SocialiteServiceProvider"
Esto crea el archivo "config/services.php", si no existe donde se agregará las credenciales de los proveedores.

Configurar las credenciales

Abrir el archivo "config/services.php" y agregar las configuraciones de los proveedores que se vayan a usar:

'google' => [
    'client_id'     => env('GOOGLE_CLIENT_ID'),
    'client_secret' => env('GOOGLE_CLIENT_SECRET'),
    'redirect'      => env('GOOGLE_REDIRECT_URI'),
],

'github' => [
    'client_id'     => env('GITHUB_CLIENT_ID'),
    'client_secret' => env('GITHUB_CLIENT_SECRET'),
    'redirect'      => env('GITHUB_REDIRECT_URI'),
],

// facebook, linkedin, twitter, etc.
Luego agregar las variables en el archivo ".env":

GOOGLE_CLIENT_ID=tu_client_id
GOOGLE_CLIENT_SECRET=tu_client_secret
GOOGLE_REDIRECT_URI=http://tu-dominio.com/auth/google/callback

Ventajas

  • Código limpio y mantenible
  • Soporte oficial de Laravel
  • Fácil de extender con providers comunitarios
  • Excelente para testing (puedes simular respuestas)
  • Compatible con las últimas versiones de Laravel

Ejemplo básico con Google

// Ruta de redirección
Route::get('/auth/google', function () {
    return Socialite::driver('google')->redirect();
});

// Callback
Route::get('/auth/google/callback', function () {
    $user = Socialite::driver('google')->user();

    // $user->getId(), $user->getName(), $user->getEmail(), $user->getAvatar(), etc.

    // Aquí creas o actualizas tu usuario
});
Solo se necesita configurar las credenciales en el fichero ".env" y en "config/services.php"