Cómo verificar si el usuario está conectado o no con “Google Inicie sesión” (OAuth 2.0)

Estoy implementando el inicio de sesión de Google por primera vez como se describe aquí y aquí .

Estoy usando HTML con Javascript.

El problema que necesita solución es el siguiente: ¿Cómo puedo, después del inicio de sesión inicial, en una página diferente (por ejemplo, una página de aterrizaje o portal que el usuario ve después de iniciar sesión), comprobar si el usuario ha iniciado sesión? ¿Hay algún servicio al que pueda llamar para verificar el inicio de sesión del usuario en estado con la clave de mi aplicación o algo similar? Supongo que tendría que incluir la API de Google en cada página.

Código de página de inicio de sesión:

Script In Head (Código del tutorial de Google mencionado anteriormente):

 ....   function onSignIn(googleUser) { var profile = googleUser.getBasicProfile(); console.log('ID: ' + profile.getId()); console.log('Name: ' + profile.getName()); console.log('Image URL: ' + profile.getImageUrl()); console.log('Email: ' + profile.getEmail()); alert(profile.getName()); } function logout() { alert('logging out'); var auth2 = gapi.auth2.getAuthInstance(); auth2.signOut().then(function () { console.log('User signed out.'); }); } ...  

Código en el cuerpo (1ª línea del tutorial de Google enumerado anteriormente, 2ª línea para activar la prueba de cierre de sesión)

  ... 
Logout
...

¿Hay alguna forma en que pueda incluir la API de Google en otra página y luego llamar a alguna función de verificación de estado de inicio de sesión? ¿O otra forma de decir concretamente si el usuario está conectado o desconectado?

Puede stringify un objeto userEntity personalizado y almacenarlo en sessionStorage donde puede verificarlo cada vez que carga una página nueva. No he probado lo siguiente, pero debería funcionar (haciendo algo similar con los tokens de WebAPI de la misma manera)

 function onSignIn(googleUser) { var profile = googleUser.getBasicProfile(); console.log('ID: ' + profile.getId()); console.log('Name: ' + profile.getName()); console.log('Image URL: ' + profile.getImageUrl()); console.log('Email: ' + profile.getEmail()); var myUserEntity = {}; myUserEntity.Id = profile.getId(); myUserEntity.Name = profile.getName(); //Store the entity object in sessionStorage where it will be accessible from all pages of your site. sessionStorage.setItem('myUserEntity',JSON.stringify(myUserEntity)); alert(profile.getName()); } function checkIfLoggedIn() { if(sessionStorage.getItem('myUserEntity') == null){ //Redirect to login page, no user entity available in sessionStorage window.location.href='Login.html'; } else { //User already logged in var userEntity = {}; userEntity = JSON.parse(sessionStorage.getItem('myUserEntity')); ... DoWhatever(); } } function logout() { //Don't forget to clear sessionStorage when user logs out sessionStorage.clear(); } 

No necesita almacenar nada en el almacenamiento local. La biblioteca le permite verificar si el usuario está conectado o no usando isSignedIn.get() en la auth2 del objeto gapi .

Cargue la biblioteca de JavaScript, asegúrese de no retrasar la carga:

  

A continuación, inicialice la biblioteca y compruebe si el usuario ha iniciado sesión o no

 var auth2; var googleUser; // The current user gapi.load('auth2', function(){ auth2 = gapi.auth2.init({ client_id: 'your-app-id.apps.googleusercontent.com' });our-app-id-here auth2.attachClickHandler('signin-button', {}, onSuccess, onFailure); auth2.isSignedIn.listen(signinChanged); auth2.currentUser.listen(userChanged); // This is what you use to listen for user changes }); var signinChanged = function (val) { console.log('Signin state changed to ', val); }; var onSuccess = function(user) { console.log('Signed in as ' + user.getBasicProfile().getName()); // Redirect somewhere }; var onFailure = function(error) { console.log(error); }; function signOut() { auth2.signOut().then(function () { console.log('User signed out.'); }); } var userChanged = function (user) { if(user.getId()){ // Do something here } }; 

No olvides cambiar la app id la app id