Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

497
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!