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

346
Visualizações
Actualizar token de Google OAuth2 automáticamente

Estoy tratando de implementar una función de carga de fotos en Google Drive (utilizando la API y el GIS de Google Drive) en una aplicación web en la que estoy trabajando, pero parece que no puedo averiguar cómo mantener a un usuario autenticado por más tiempo que el tiempo de caducidad designado del token de acceso (que es de 1 hora) sin avisar al usuario ni abrir una ventana emergente.

El código de muestra proporcionado en https://github.com/googleworkspace/browser-samples/blob/master/drive/quickstart/index.html obliga al usuario a hacer clic en el botón "actualizar" para obtener un nuevo token, pero esto significa que tendría que obligar a los usuarios a iniciar sesión cada hora, lo cual no es ideal (ya que es probable que los usuarios utilicen la aplicación durante períodos de más de una hora a la vez).

Según https://developers.google.com/identity/oauth2/web/guides/use-token-model#token_expiration , esto parece ser intencional. Sin embargo, después de mirar un poco, descubrí que supuestamente se podría usar un token de actualización para generar un nuevo token de acceso que caduca después de otra hora. Suponiendo que genere un token nuevo cada 45 minutos aproximadamente (que en realidad sugirió otro artículo de Google, pero parece que no puedo encontrarlo ahora), entonces nunca debería preocuparse por esta reautenticación.

Sin embargo, no puedo averiguar cómo obtener un token de actualización.

No recibir el token de actualización de Google OAuth sugiere enviar access_type=offline como un parámetro de consulta, pero no estoy usando ningún redireccionamiento, y la documentación mencionada anteriormente para initTokenClient y requestAccessToken no hace ninguna mención de un parámetro access_type .

Lo más cerca que he estado es llamar al método requestAccessToken periódicamente, pero aún aparece una ventana emergente para que el usuario inicie sesión nuevamente, que es lo que estoy tratando de evitar. Incluso al usar requestAccessToken({ prompt: "" }) aún aparece esta ventana emergente, pero al menos inicia sesión sin ninguna intervención del usuario. ¿Hay alguna forma de desactivar esta ventana emergente por completo?

En el peor de los casos, fuerzo al usuario a volver a autenticarse cada hora, pero parece que esto sería una experiencia de usuario menos que ideal. Cualquier ayuda es apreciada.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Revisé el código de la biblioteca GIS y puedo confirmar que prompt='' y prompt='none' no están implementados como implica la documentación de requestAccessToken. GIS siempre abre una ventana emergente. El parámetro de solicitud solo cambia lo que sucede en la ventana emergente. Tampoco hay funciones de almacenamiento de tokens o almacenamiento en caché en GIS, solo en ventanas emergentes.

El comportamiento actual del parámetro de solicitud se ve por diseño basado en la tabla de comparación de flujo de OAuth 2.0 . El token de acceso debe actualizarse solo cuando el usuario invoca una acción que lo requiera.

Esto nos deja con una experiencia UX bastante horrible en la que la ventana emergente tiene que abrirse y cerrarse brevemente cada hora más o menos. La alternativa es utilizar el flujo de código de autorización. Pero requiere implementar un mecanismo para enviar el token de acceso al lado del cliente desde el backend.

about 4 years ago · Juan Pablo Isaza Relatório

0

El flujo de botones y el comportamiento de la ventana emergente de consentimiento son intencionales para que los navegadores obtengan un token de acceso, cuando la configuración de la solicitud en una cadena vacía suprimirá la ventana emergente del usuario en cada solicitud: prompt='' .

Adoptar el modelo de código con código de autenticación e intercambiar el token de actualización por el token de acceso es lo que está buscando si desea realizar acciones en nombre del usuario sin que esté presente o sin tener que activar una solicitud de token con un gesto como una pulsación de botón.

about 4 years ago · Juan Pablo Isaza 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