Google Auth2.0 NodeJS: inicio de sesión con google

Una de las herramientas más importantes para nuestro sitio o desarrollo web es el inicio de sesión, y al usar google auth2.0 Nodejs definitivamente tendremos mejores resultados con nuestros usuarios.

Si bien no todas las webs necesitan un inicio de sesión como tal, cuando es necesario, debemos tratar de buscar la mayor seguridad posible en el proceso. Tal cual como lo menciono en otros post, las contraseñas de nuestros usuarios son clave para el correcto funcionamiento de la app, pero si podemos apalancarnos de grandes empresas como google, no debemos omitirlo.

Lo que vas a necesitar

Aquí te dejo algunos de los links que vas a necesitar en el proceso:

  • Repositorio: Haz click aquí para ver el respositorio. Recuerda que esta es la sexta sesión de la escuela desarrollo web con NodeJs. También recuerda que en los «commits» puedes ver sesión por sesión.
  • Cifrado AES: en dado caso que quieras conocer otros métodos de autenticación, haz click aquí para conocer este crifrado.
  • Passport: haz click aquí para ver qué es y cómo funciona la implementación de google con passport.

Crear proyecto en consola de Google

aplicación consola google
dual monitor macbook pro
Dual monitor macbook pro con estación de acoplamiento tobenONE uds030

Si estás buscando una solución para poder usar dual monitor macbook pro con excelente relación calid…

crear contrato solidity
Cómo crear contrato solidity: lotería en ethereum

En esta tercera sesión del curso veremos cómo crear contrato solidity para ethereum con base en una …

Qué es Gas y GasPrice: transacciones y congestión en blockchain

Cuando ejecutamos transacciones en blockchain es probable que desconozcamos los costos o tiempos de …

Para iniciar lo primero es crear nuestra propia aplicación o proyecto en la consola de google. Esto se puede hacer desde una cuenta de gmail sin ningún problema. Haz click aquí para ingresar a la consola de google. Una vez dentro lo que tienes que hacer es click en «proyecto nuevo», seleccionar un nombre cualquiera y listo!

Pantalla de consentimiento

La pantalla de consentimiento permite configurar unos pasos adicionales en el proyecto antes de entrar al código. Entonces aquí lo que haces es:

  • Escribe un nombre para tu aplicación
  • Deja un correo electrónico preferiblemente gmail.
  • Djea el tipo de usuario: externo.

Agregamos google people API

Dentro de la biblioteca de la consola de google, debemos buscar una api llamada GOOGLE PEOPLE API. Esta es la que nos permite obtener datos de los usuarios, desde sus cuentas de gmail, como el nombre, o imagen, entre otros. La buscamos y habilitamos.

Creamos credenciales

Los credenciales de ingreso al proyecto son tal vez el paso más importante. Vamos a revisar 2 pasos importantes:

  • En orígenes autorizados, debemos colocar la URI desde donde se accederá, y como esta es una app de desarrollo, usamos localhost, así que la agregamos.
  • En la URI de redireccionamiento debemos poner la URL completa luego de que los usuarios sean autorizados. Puede ser la página de inicio de la aplicación, página de gracias, o bueno la que desees.

Una vez terminado, haz click en guardar y te aparecerán 2 datos importantes: CLIENTE ID – CLIENT SECRET. Ambos serán usados en el código más adelante entonces puedes guardarlos en un blog de notas o bien, aprovechar DOTENV para protegerlos en variables.

Haz click aquí para ver el video con post sobre dotenv.

Configurar estrategia: passportjs

Ahora pasando al código, vamos a encontrar que passportjs es quien nos permitirá poder implementar el ingreso o inicio de sesión con google, dentro de nuestra aplicación de NODEJS. Iniciamos instalando y solicitando:

$ npm install passport-google-oauth20

// luego pasamos a solicitar
var GoogleStrategy = require('passport-google-oauth20').Strategy;

Ahora, dentro del mismo archivo JS (el archivo donde estás configurando el servidor) puedes pegar el siguiente fragmento:

passport.use(new GoogleStrategy({
    clientID: GOOGLE_CLIENT_ID,
    clientSecret: GOOGLE_CLIENT_SECRET,
    callbackURL: "http://www.example.com/auth/google/callback"
  },
  function(accessToken, refreshToken, profile, cb) {
    User.findOrCreate({ googleId: profile.id }, function (err, user) {
      return cb(err, user);
    });
  }
));

Aquí debemos tener en cuentra 3 puntos:

  • reemplazar client id
  • reemplazar client secret
  • reemplazar la url callback. Tal cual la que pusimos en la parte superior del post al crear los credenciales

Ahora, si vemos dentro de la función vamos a encontrar un findorcreate. Este debe ser previamente instalado con el siguiente comando:

npm install mongoose-findorcreate

// luego solicitar en el mismo archivo:
const findOrCreate = require('mongoose-findorcreate');

Por último paso en findorcreatre, debemos asignarle un modelo y schema para que pueda sobre este buscar, encontrar o crear nuevos documentos:

userSchema.plugin(findOrCreate);

GET auth google

El siguiente paso es crear la ruta con el método get, para recibir cuando el usuario haga click en «autenticar con google», y es el siguiente:

app.get('/auth/google',passport.authenticate('google', { scope: ['profile'] }));

Entonces, en esta línea de código:

  1. Usamos la autenticación de passport, con google, el cual usará su estrategia, configurada anteriormente.
  2. El scope determina qué es lo que queremos obtener, en este caso el perfil o profile

claramente este es el que permite que cuando un usuario haga click, se abra una nueva ventana totalmente diseñada por google para seleccionar con qué cuenta va a ingresar.

Serializar

Este proceso se realiza precisamente en procesos de autenticación y aunque ya lo hemos realizado en otros casos, para google también hay que realziarlo. Lo hacemos de la siguiente forma:

passport.serializeUser(function(user, cb) {
    process.nextTick(function() {
      cb(null, { id: user.id });
    });
  });
  
  passport.deserializeUser(function(user, cb) {
    process.nextTick(function() {
      return cb(null, user);
    });
  });

Modificar schema

por último, es importante que el schema que tengas para tu base de datos, contenga la propiedad googleid, así:

const Schema = mongoose.Schema;
const usuarioSechema = new Schema ({
    username: String,
    googleId: String,
});

De esta manera, el googleId se guardará en el documento de la base de datos de cada usuario.

Video de ayuda

Hice este video como la séptima sesión del curso para ayudarte en el proceso más detenidamente. Si te gusta, no olvides dar like y suscribirte para nuevos videos!

Inicio de sesión google

Producto sugerido

Si eres como yo que pasa bastatne tiempo frente al compu, puede que la barra de luz te sirva bastante para cuidar tu vista en esas largas jornadas. También te dejo aquí el post para que veas la reseña completa.

LAMPARA – 4528 valoraciones

Quntis Lámpara para monitor de computadora, barra de luz para monitor de pantalla para el cuidado de los ojos, lámpara de tareas LED de lectura electrónica con atenuación automática, barra de lámpara regulable, control táctil, sin deslumbramiento de pantalla, ahorro de espacio, lámparas de escritorio para oficina en casa

  • Sin reflejos de pantalla y sin parpadeo, antiluz azul: la barra de luz para monitor de computadora Quntis tiene un diseño óptico asimétrico único que ilumina solo tu escritorio y teclado mientras garantiza que no se reflejen en la pantalla. Gracias a su avanzado sistema de protección ocular, nuestras lámparas de escritorio para oficina en casa bloquean la luz azul y la radiación óptica, aliviando eficazmente la fatiga ocular para proteger tus ojos. Es la opción ideal para estudiantes, diseñadores de pintura y trabajadores de oficina de negocios.

VER EN AMAZON

Conclusión

El inicio de sesión con google es demasiado importante no solamente para la confianza de nuestros usuarios sino también para la seguridad de su información. Así mismo implementarlo en nuestra aplicación de NODE JS ya que cuenta con varios pasos para su ejecución.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 0 / 5. Recuento de votos: 0

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en los medios sociales!

Resumen
Google Auth20 NodeJS | Inicio de sesión con Google | Passport
Nombre del artículo
Google Auth20 NodeJS | Inicio de sesión con Google | Passport
Descripción
Haz click y conoce cómo implementar google auth20 Nodejs en la séptima sesión de la escuela desarrollo web con Node js
Autor
Publisher Name
eduardo Arias
Publisher Logo

Deja un comentario

Carrito de compra