Saltar al contenido

Autenticarse en la API de Google con Node JS

La guía paso a paso o código que encontrarás en este post es la resolución más rápida y válida que hallamos a esta duda o problema.

Solución:

La guía del maniquí para Google OAuth de 3 patas.

Literalmente, todo lo que necesita saber está en esta única página https://developers.google.com/identity/protocols/OAuth2WebServer. Léelo dos veces y serás un ninja de OAuth. En resumen dice…

  1. Construya una URL de accounts.google.com con 4 parámetros de consulta: –
    1. client_id para identificar tu aplicación
    2. scope para decir qué permisos estás solicitando
    3. redirect_uri para decirle a Google dónde redirigir el navegador del usuario con el resultado
    4. response_type=code para decir que quieres un código de autenticación
  2. redirigir el navegador del usuario a esa URL
  3. Toma un sorbo de café mientras el usuario inicia sesión, elige su cuenta de Google y otorga el permiso, hasta que finalmente…
  4. El navegador del usuario se redirige de nuevo a su aplicación redirect_uri, con un parámetro de consulta de code que es el código de autenticación de una sola vez
  5. Publique el código de autenticación en el extremo del token de Google
  6. Analice la respuesta JSON para obtener el token de acceso
  7. Use el token de acceso en un encabezado http de “autorización: bearer access_token” para sus posteriores solicitudes de API de Google

Si va a https://developers.google.com/oauthplayground/, puede seguir los pasos en línea para ver cómo se ven las distintas URL y respuestas.

Escribí esta biblioteca para obtener información del usuario, espero que esto ayude.

'use strict'

const  google  = require('googleapis')
const credentials = require('../configs/config').google

class googleApi 
    constructor()
        const client_id, client_secret, redirectUri  = credentials;
        this.oAuth2Client = new google.auth.OAuth2(client_id, client_secret, redirectUri)
    

    generateUrl(scopes)
        const url = this.oAuth2Client.generateAuthUrl(
            access_type: 'offline',
            scope: scopes.join(' ')
        )
        return url;
    

    async getUserInfo(code)
        const credentials = await this.oAuth2Client.getToken(code)
        this.oAuth2Client.setCredentials(credentials.tokens);
        const plus = google.plus(
            version: 'v1',
            auth: this.oAuth2Client,
        );
        const data = await plus.people.get(userId: 'me');
        return data;
    


module.exports = new googleApi();

y esta es la implementación:

'use strict'
const googleApi = require('../libs/google');

exports.requestGmailAuth = function (req, res, next)
    let url = googleApi.generateUrl(scopes)
    res.redirect(url);


exports.getGmailUserInfo = async function (req, res, next)
    const qs = new url.URL(req.url, 'http://localhost:3000').searchParams;
    let code = qs.get('code')
    if(!code)
        next(new Error('No code provided'))
    
    googleApi.getUserInfo(code)
        .then(function(response)
            res.send(response.data)
        ).catch(function(e)
            next(new Error(e.message))
    )

estas son las rutas:

app.get('/request/gmail/auth', user.requestGmailAuth)
app.get('/get/gmail/user', user.getGmailUserInfo)

Cuando /request/gmail/auth recibe una solicitud, se redirige a la página de consentimiento y luego la página de consentimiento se redirige a /get/gmail/user con el parámetro “código”.

pruebe este fragmento y, si el problema persiste, verifique su identificación de cliente y secreto de cliente, y también asegúrese de tener google plus api habilitado en su panel de desarrollador.

Si haces scroll puedes encontrar los comentarios de otros administradores, tú igualmente tienes el poder mostrar el tuyo si lo crees conveniente.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *