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

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

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 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!