Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

139
Vistas
¿Cómo obtener información de correo electrónico y perfil de la API de Google OAuth2?

Estoy tratando de recuperar el nombre de un usuario que ha iniciado sesión usando el cliente de Google API Node.js, usando la API de OAuth2.

Siguiendo el ejemplo de uso, logré iniciar sesión, pero no puedo encontrar la manera de obtener la información del perfil.

No estoy usando People API ni Plus API porque, hasta donde yo sé, OAuth2 incluye https://www.googleapis.com/auth/userinfo.profile , que debería ser suficiente para la tarea.

He visto algunas preguntas similares y probé las soluciones de esta pero no funcionó, tal vez sea demasiado antigua (?)

Con el paquete npm googleapis, ¿cómo obtengo la dirección de correo electrónico del usuario después de autenticarlo?

Mirando otras API como Hojas de cálculo de Google, es posible llamar a sus funciones de esta manera:

 var google = require('googleapis'); var sheets = google.sheets('v4'); ... sheets.spreadsheets.values.get({ auth: auth, spreadsheetId: file_id, range: my_ranges, }, function(err, response){ ... } );

Pero parece que OAuth2 no funciona así...

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Puede usar Quickstart para node.js. La información detallada es https://developers.google.com/gmail/api/quickstart/nodejs . Con un script de muestra de Quickstart, puede recuperar el token de acceso mediante OAuth2 y recuperar el correo electrónico y el perfil de usuario.

Antes de ejecutar una muestra de Quickstart, confirme los requisitos previos, el paso 1 y el paso 2.

Puede usarlo cambiando listLabels(auth) de la siguiente manera. El alcance es https://www.googleapis.com/auth/gmail.readonly .

Texto :

 var gmail = google.gmail({ auth: auth, version: 'v1' }); gmail.users.getProfile({ auth: auth, userId: 'me' }, function(err, res) { if (err) { console.log(err); } else { console.log(res); } }); gmail.users.messages.get({ 'userId': 'me', 'id': 'mail ID', 'format': 'raw' }, function (err, res) { console.log(new Buffer(res.raw, 'base64').toString()) });
  • gmail.users.getProfile recupera el perfil de usuario.
  • gmail.users.messages.get recupera el correo electrónico.

Si entendí mal tu pregunta, lo siento.

Agregado :

Por favor cambie arriba a la siguiente secuencia de comandos. El alcance es https://www.googleapis.com/auth/userinfo.profile .

Texto :

 var oauth2 = google.oauth2({ auth: auth, version: 'v2' }); oauth2.userinfo.v2.me.get( function(err, res) { if (err) { console.log(err); } else { console.log(res); } });

Resultado :

 { id: '#####', name: '#####', given_name: '#####', family_name: '#####', link: '#####', picture: '#####', gender: '#####', locale: '#####' }
over 4 years ago · Santiago Trujillo Denunciar

0

También puede consultar PassportJS. Tienen múltiples estrategias, incluidas OAuth2 y 3 estrategias diferentes de Google Auth. Mi respuesta realmente no responde a su pregunta, pero tal vez incluso echando un vistazo al código de Passport, puede obtener su respuesta.

http://passportjs.org/

over 4 years ago · Santiago Trujillo Denunciar

0

Solución 2021

Esta respuesta puede desviarse de la pregunta original, pero creo que será útil para algunas personas que obtienen información de usuario de Google en el backend al generar AuthUrl y enviarlo al lado del cliente y luego recibir la respuesta de datos en la URL de devolución de llamada después el usuario da permiso desde el lado del cliente.

Algunas declaraciones globales

 import { google } from "googleapis"; const Oauth2Client = new google.auth.OAuth2( googleCredentials.CLIENT_ID, googleCredentials.CLIENT_SECRET, googleCredentials.REDIRECT_URI );

Genere la URL de autenticación con los ámbitos

 const SCOPE = [ 'https://www.googleapis.com/auth/userinfo.profile', // get user info 'https://www.googleapis.com/auth/userinfo.email', // get user email ID and if its verified or not ]; const auth_url = Oauth2Client.generateAuthUrl({ access_type: "offline", scope: SCOPE, prompt: "consent", state: "GOOGLE_LOGIN", }); return res.json({ url: auth_url }); // send the Auth URL to the front end

Obtener los datos del usuario en la devolución de llamada

 let code = req.query.code; // get the code from req, need to get access_token for the user let { tokens } = await Oauth2Client.getToken(code); // get tokens let oauth2Client = new google.auth.OAuth2(); // create new auth client oauth2Client.setCredentials({access_token: tokens.access_token}); // use the new auth client with the access_token let oauth2 = google.oauth2({ auth: oauth2Client, version: 'v2' }); let { data } = await oauth2.userinfo.get(); // get user info console.log(data); // you will find name, email, picture etc. here

Siéntase libre de discutir en los comentarios si hay alguna confusión o error.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda