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

222
Vistas
¿Cómo hacer que el nuevo botón Iniciar sesión con Google conserve el estado de inicio de sesión del usuario en la recarga de la página?

Google está descartando el antiguo botón de inicio de sesión en favor del nuevo . Tengo una miniaplicación de una sola página en la que el servidor solo devuelve contenido de página estático. La página requiere que el usuario inicie sesión y maneja el token devuelto en el lado del cliente. El botón antiguo manejó el caso de la recarga de la página bastante bien, llamando a la devolución de llamada con el nuevo token de inmediato. Sin embargo, el nuevo botón no parece manejar la recarga de la página. Al usar la API de JavaScript con HTML como:

 <div id="parent" /> <script> function initGoogleSignIn() { google.accounts.id.initialize({ client_id: 'YOUR_GOOGLE_CLIENT_ID', auto_select: true, callback: onSignIn, }); google.accounts.id.renderButton(document.getElementById('parent'),{}); } function onSignIn(payload) { let unverifiedResponsePayload = JSON.parse(atob(payload.credential.split('.')[1])); //this is just an example - instead you should _verify_ the token before any actual use console.log(unverifiedResponsePayload.email); } </script> <script src="https://accounts.google.com/gsi/client" onload="initGoogleSignIn()"></script>

De acuerdo con la documentación , configurar auto_select en verdadero debería causar que "un token de ID [...] se devuelva automáticamente sin ninguna interacción del usuario cuando solo hay una sesión de Google que haya aprobado su aplicación antes". Sin embargo, iniciar sesión y luego recargar la página no llama a la devolución de llamada. El botón antiguo llama a la devolución de llamada en una configuración similar.

La pregunta es cómo lograr el antiguo comportamiento de obtener el token sin la interacción del usuario en la recarga de la página con el nuevo botón.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Lo que descubrí es que uno puede configurar "One Tap", lo que haría que se llamara a la devolución de llamada en la recarga de la página, pero solo después de mostrar el bloque One Tap y varios segundos de retraso. Todavía me pregunto si este es un comportamiento intencionado que simplemente no está debidamente documentado o si el documento es correcto y Google debe corregir el comportamiento en la biblioteca.

Así es como se puede cambiar la función initGoogleSignIn para usar One Tap:

 function initGoogleSignIn() { google.accounts.id.initialize({ client_id: 'YOUR_GOOGLE_CLIENT_ID', auto_select: true, callback: onSignIn, prompt_parent_id: 'parent', //DOM ID of the container element for One Tap block }); google.accounts.id.prompt((notification) => { if (notification.isNotDisplayed() || notification.isSkippedMoment() || (notification.isDismissedMoment() && notification.getDismissedReason() != 'credential_returned')) { // no sign-in happened, display the button google.accounts.id.renderButton(document.getElementById('parent'),{}); } }); }

Este enfoque aún agrega un retraso notable (> 4 segundos en mi caso) para que se llame a la devolución de llamada. El botón antiguo hizo esto mucho más rápido y sin ninguna representación visual.

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