Seleccionar página

En este post, trataremos el inicio de sesión por red social tales como Facebook, Google+ y Github.

Para ello, haremos lo  siguiente:

  • Instalamos el paquete Socialite que será el encargado de obtener los datos del usuario a través de la red social elegida.
  • Obtener las API Keys de cada red social.
  • Crear las rutas destinadas a gestionar el inicio de sesión y registro social.
  • Crear modelo «Social» que guardará los datos obtenidos de la cuenta social.
  • Modificar el modelo «User» para relacionarlo con el modelo «Social».
  • Crear controlador de inicio de sesión/registro por red social.
  • Emitir evento de logueado con el campo «active» a «true» o «1» ya que lo damos por cuenta activada y por tanto, no le enviaremos email para que active la cuenta.
  • Crear la vista de login social.

Verificaremos que el usuario (en concreto, el email) devuelto por la red social. Tras eso, pueden ocurrir 2 cosas:

  • El email no existe en nuestra base de datos: creamos un nuevo usario en la BBDD sin contraseña, guardamos su ID social y lo enlazamos al usuario, generamos un token y lo devolvemos al Frontend:
  • El email existe en nuestra base de datos: generamos un token y lo devolvemos al cliente.

Como te darás cuenta, no se genera el token a partir de sus credenciales (email y contraseña) si no a partir del modelo User. Lo veremos en el código.

Instalamos el paquete Socialite:

Añadimos el provider y el alias:

Ahora toca obtener las API Keys registrando nuestra App en las redes sociales que hemos mencionado al principio. Tienes las instrucciones para cada una de ellas en este post.

Como nuestro archivo de entorno Laravel no es público (en github por ejemplo, es uno de los archivos que NO debemos compartir), ponemos claves obtenidas de cada red social. Éstas son sólo un ejemplo.

Asociamos nuestras claves del archivo «.env» en nuestro archivo de servicios tal que así:

Creamos las rutas:

Creamos el modelo «Social» y la migración correspondiente con el siguiente comando:

Abrimos y editamos cada archivo:

Modificamos el modelo «User»:

Y también incluimos en el DataBaseSeeder la nueva tabla:

Creamos el controlador social:

Ya por último, la vista «login» de Laravel modificada para incluír los botones de inicio de sesión en redes sociales:

Y su CSS minificado:

Esto es todo en cuanto a autenticación por red social. Volveremos a este post cuando estemos en la parte de Angular para hacer las modificaciones necesarias y así hacerlo compatible con el framework del Front-end.