He utilizado la API de identidad de Google para iniciar sesión en el usuario. Funciona perfectamente al iniciar sesión. Pero el cierre de sesión no funciona, no sé por qué.
Este es el código de salida:
const button = document.getElementById('signout_button'); button.onclick = () => { google.accounts.id.disableAutoSelect(); console.log('logged out'); };Pero no funciona incluso si presiona el botón.
Quiero que este cuadro de Google se convierta en el botón de inicio de sesión después de cerrar sesión, pero no funciona:
Está haciendo lo correcto al llamar a disableAutoSelect() en su controlador onclick de cierre de sesión, pero solo se aplica y controla el comportamiento del botón de inicio de sesión automático. No afecta a One Tap ni al botón Iniciar sesión con Google.
Para aclarar más lo que significa iniciar sesión... hay dos sesiones de usuario:
Administrarás 2, pero 1 no lo administras tú. Para 1, los usuarios pueden iniciar sesión en su cuenta de Google desde una pestaña, el navegador o un dispositivo/SO. Esto establece qué cuenta de Google tiene una sesión activa. El estado de esta sesión es independiente de 2 donde administra el estado de inicio o cierre de sesión de su aplicación.
Para el caso 2: inicie sesión en su sitio, recibirá un JWT de Google después del consentimiento del usuario y podrá proceder a cambiar el estado de inicio de sesión de su aplicación. Una forma de rastrear el estado de inicio de sesión es usar cookies. Para que esto sea más fácil de administrar en HTML, el atributo data-skip_prompt_cookie está disponible para permitirle usar una cookie para controlar si se mostrará o no la ventana emergente One Tap, la opción de inicio de sesión automático. Normalmente querrá suprimir la ventana emergente si el usuario ha iniciado sesión... y el valor de la cookie rastrea el estado de inicio de sesión. Si está utilizando JavaScript, simplemente omita llamar a google.accounts.id.prompt para no obligar al usuario a iniciar sesión nuevamente si ya ha iniciado sesión en su sitio.
ESTÁ BIEN. Ahora que hemos repasado un par de métodos para establecer 2. podemos llegar a lo que significa cerrar sesión en su sitio...
Para cerrar sesión, desde su controlador button.onclick , borre data-skip_prompt_cookie o cambie el estado si está usando JavaScript para rastrear el estado de la sesión usando su back-end. Esto le permitirá mostrar una ventana emergente de un toque o un aviso de inicio de sesión automático a los usuarios que cerraron sesión en su visita de regreso a su sitio. La ausencia de la cookie significa que se mostrarán las solicitudes de inicio de sesión, o su código JS llamará a google.accounts.id.prompt para mostrar las solicitudes de inicio de sesión.
Ahora, para ser realmente minucioso, hay un escenario más a tener en cuenta. Si un usuario desea eliminar su cuenta de su sitio, querrá usar google.accounts.id.revoke para revocar el consentimiento para compartir su perfil. Hacer esto evitará que el JWT se comparta cuando se utilicen los botones One Tap, inicio de sesión automático o Iniciar sesión con Google. En su lugar, el flujo se reiniciará y se le pedirá al usuario que elija una cuenta de Google y dé su consentimiento, reiniciando efectivamente su flujo de inicio de sesión para 2.