Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

502
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda