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

500
Vistas
Flujo único: ¿iniciar sesión del usuario a través de Google oAuth Y otorgar acceso sin conexión/al servidor?

Estoy tratando de implementar el inicio de sesión de Google y el acceso a la API para una aplicación web con un back-end de Node.js. Los documentos de Google ofrecen dos opciones usando una combinación de platform.js del lado del cliente y google-auth-library del lado del servidor:

  1. Inicio de sesión de Google conautenticación de back-end , a través del cual los usuarios pueden iniciar sesión en mi aplicación con su cuenta de Google. ( auth2.signIn() en el cliente y verifyIdToken() en el servidor).
  2. Inicio de sesión de Google para aplicaciones del lado del servidor , a través del cual puedo autorizar al servidor a conectarse a Google directamente en nombre de mis usuarios. ( auth2.grantOfflineAccess() en el cliente, que devuelve un código que puedo pasar a getToken() en el servidor).

Necesito ambos: quiero autenticar a los usuarios a través del inicio de sesión de Google; y quiero configurar la autenticación del servidor para que también pueda funcionar en nombre del usuario.

No puedo entender cómo hacer esto con un solo flujo de autenticación. Lo más cerca que puedo estar es hacer los dos en secuencia: autenticar al usuario primero con signIn() y luego (según sea necesario), hacer un segundo paso a través grantOfflineAccess() . Esto es problemático:

  1. El usuario ahora tiene que pasar por dos autenticaciones consecutivas, lo cual es incómodo y hace que parezca que hay algo roto en mi aplicación.
  2. Para evitar tener problemas con los bloqueadores de ventanas emergentes, no puedo darles esos dos flujos uno encima del otro; Tengo que hacer la primera autenticación, luego proporcionar un botón para iniciar la segunda autenticación. Esto es súper incómodo porque ahora tengo que explicar por qué el primero no fue suficiente.

Idealmente, hay alguna variante de signIn() que agrega el acceso sin conexión al flujo de autenticación inicial y devuelve el código junto con los tokens habituales, pero no veo nada. ¿Ayuda?

(Editar: un consejo que recibí en otro lugar es implementar solo el flujo n. ° 2, luego usar una tienda de cookies segura, algún tipo de identificador de usuario que verifico con la cuenta de usuario con cada solicitud. Puedo ver que esto funcionaría funcionalmente, pero básicamente significa que estoy implementando mi propio sistema de inicio de sesión, lo que parece aumentar la posibilidad de que introduzca errores en un sistema crítico).

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

0

Durante la autenticación (iniciar sesión), debe agregar el tipo de acceso "fuera de línea" (de forma predeterminada en línea), por lo que obtendrá un token de actualización que puede usar para obtener el token de acceso más adelante sin más consentimiento/autenticación del usuario. No necesita otorgar sin conexión más tarde, sino solo durante el inicio de sesión agregando el tipo de acceso sin conexión. No sé sobre plataforma.js, pero usé el módulo npm "pasaporte". También he usado el módulo/biblioteca npm "googleapis", esto es oficial de Google.

https://developers.google.com/identity/protocols/oauth2/web-server

https://github.com/googleapis/google-api-nodejs-cliente

Verifique esto: https://github.com/googleapis/google-api-nodejs-client#generating-an-authentication-url

EDITAR: tiene un lado del servidor y necesita trabajar en nombre del usuario. También desea usar Google para iniciar sesión. Solo necesita el inicio de sesión de Google n. ° 2 para aplicaciones del lado del servidor, ¿por qué está considerando las opciones n. ° 1 y n. ° 2?

Puedo pensar en el n. ° 2 como la forma adecuada según sus requisitos. Si solo desea iniciar sesión, use un alcance básico como correo electrónico y perfil (openid connect) para identificar al usuario. Y si desea un permiso delegado del usuario (como si desea crear automáticamente un evento en el calendario de los usuarios), simplemente agregue el tipo de acceso sin conexión durante el inicio de sesión. Puede usar solo el inicio de sesión para usuarios registrados y el acceso sin conexión para nuevos usuarios.

Arriba hay un flujo de autenticación único.

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