La autenticación es un aspecto fundamental en cualquier aplicación web. Laravel, uno de los frameworks de desarrollo web más populares, ofrece una forma sencilla de implementar la autenticación utilizando proveedores de OAuth como Google. En este artículo, aprenderemos cómo implementar la autenticación de Laravel con Google OAuth utilizando el paquete Socialite.
Requisitos previos
Antes de comenzar, asegúrate de tener los siguientes requisitos previos:
– Laravel instalado en tu máquina local.
– Una cuenta de Google para configurar la aplicación en Google.
Configuración de la aplicación en Google
El primer paso para implementar la autenticación de Laravel con Google OAuth es configurar la aplicación en Google. Sigue estos pasos:
1. Inicia sesión en la Consola de Desarrolladores de Google utilizando tu cuenta de Google.
2. Crea un nuevo proyecto y dale un nombre descriptivo.
3. En la página de resumen del proyecto, haz clic en «Habilitar APIs y servicios».
4. Busca «Google+ API» y actívala.
5. En el menú lateral, haz clic en «Credenciales».
6. Haz clic en «Crear credenciales» y selecciona «ID de cliente de OAuth».
7. Selecciona «Aplicación web» como tipo de aplicación.
8. En la sección «Orígenes de JavaScript autorizados», agrega la URL de tu aplicación Laravel (por ejemplo, http://localhost:8000).
9. En la sección «URI de redireccionamiento autorizados», agrega la URL de redireccionamiento después de la autenticación (por ejemplo, http://localhost:8000/auth/google/callback).
10. Haz clic en «Crear» y se generará un ID de cliente y un secreto de cliente.
Instalación del paquete Socialite
Una vez que hayas configurado la aplicación en Google, el siguiente paso es instalar el paquete Socialite en tu proyecto Laravel. Socialite es un paquete oficial de Laravel que simplifica la autenticación con proveedores de OAuth como Google.
Para instalar Socialite, abre una terminal y navega hasta el directorio de tu proyecto Laravel. Luego, ejecuta el siguiente comando:
«`
composer require laravel/socialite
«`
Este comando instalará el paquete Socialite y sus dependencias en tu proyecto.
Configuración de las credenciales de Google
Después de instalar Socialite, debes configurar las credenciales de Google en tu archivo `.env` para que Laravel pueda comunicarse con la API de Google. Abre el archivo `.env` en la raíz de tu proyecto Laravel y agrega las siguientes líneas:
«`
GOOGLE_CLIENT_ID=your-client-id
GOOGLE_CLIENT_SECRET=your-client-secret
GOOGLE_REDIRECT_URI=http://localhost:8000/auth/google/callback
«`
Reemplaza `your-client-id` y `your-client-secret` con el ID de cliente y el secreto de cliente que obtuviste al configurar la aplicación en Google.
Implementación de la autenticación con Google OAuth
Una vez que hayas configurado las credenciales de Google, puedes comenzar a implementar la autenticación con Google OAuth en tu aplicación Laravel.
Creación de rutas y controladores
En primer lugar, debes crear las rutas y los controladores necesarios para manejar la autenticación con Google OAuth. Abre el archivo `routes/web.php` en tu proyecto Laravel y agrega las siguientes rutas:
«`php
Route::get(‘/auth/google’, ‘AuthLoginController@redirectToGoogle’);
Route::get(‘/auth/google/callback’, ‘AuthLoginController@handleGoogleCallback’);
«`
Estas rutas redirigirán al usuario a la página de inicio de sesión de Google y manejarán la respuesta de Google después de la autenticación.
A continuación, crea un nuevo controlador llamado `LoginController` ejecutando el siguiente comando en tu terminal:
«`
php artisan make:controller AuthLoginController
«`
Abre el archivo `app/Http/Controllers/Auth/LoginController.php` y agrega los siguientes métodos:
«`php
use IlluminateSupportFacadesAuth;
use LaravelSocialiteFacadesSocialite;
…
public function redirectToGoogle()
{
return Socialite::driver(‘google’)->redirect();
}
public function handleGoogleCallback()
{
$user = Socialite::driver(‘google’)->user();
// Aquí puedes agregar la lógica para autenticar al usuario en tu aplicación Laravel
return redirect(‘/home’);
}
«`
El método `redirectToGoogle` redirigirá al usuario a la página de inicio de sesión de Google, mientras que el método `handleGoogleCallback` manejará la respuesta de Google después de la autenticación.
Creación de vistas
Una vez que hayas configurado las rutas y los controladores, debes crear las vistas necesarias para mostrar el botón de inicio de sesión de Google y manejar la respuesta de Google después de la autenticación.
Crea un nuevo archivo llamado `login.blade.php` en el directorio `resources/views/auth` y agrega el siguiente código:
«`html
@extends(‘layouts.app’)
@section(‘content’)
@endsection
«`
Este código muestra un botón de inicio de sesión de Google que redirigirá al usuario a la página de inicio de sesión de Google cuando se haga clic en él.
Prueba de la autenticación con Google OAuth
Una vez que hayas configurado las rutas, los controladores y las vistas, puedes probar la autenticación con Google OAuth en tu aplicación Laravel.
Inicia tu servidor de desarrollo ejecutando el siguiente comando en tu terminal:
«`
php artisan serve
«`
Luego, abre tu navegador web y visita la URL de tu aplicación Laravel (por ejemplo, http://localhost:8000). Deberías ver la página de inicio de sesión con el botón «Login with Google». Haz clic en el botón y serás redirigido a la página de inicio de sesión de Google. Ingresa tus credenciales de Google y, una vez que hayas iniciado sesión, serás redirigido de vuelta a tu aplicación Laravel.
En este punto, puedes agregar la lógica necesaria en el método `handleGoogleCallback` del controlador `LoginController` para autenticar al usuario en tu aplicación Laravel. Puedes utilizar el objeto `$user` devuelto por Socialite para obtener la información del usuario y realizar las acciones necesarias, como crear un nuevo usuario en tu base de datos o autenticar a un usuario existente.
Conclusión
En este artículo, hemos aprendido cómo implementar la autenticación de Laravel con Google OAuth utilizando el paquete Socialite. Configuramos la aplicación en Google, instalamos el paquete Socialite, configuramos las credenciales de Google en nuestro proyecto Laravel, implementamos las rutas y los controladores necesarios, creamos las vistas correspondientes y probamos la autenticación con Google OAuth en nuestra aplicación Laravel. Ahora puedes utilizar esta funcionalidad para permitir que los usuarios inicien sesión en tu aplicación utilizando sus cuentas de Google.