Prima di tutto, sto seguendo questa guida https://developers.google.com/identity/sign-in/web/ e questo riferimento https://developers.google.com/identity/sign-in/web/reference.Google api auth2 signOut not working
Ma invece di avere una richiamata dichiarata in window
, ho usato la funzione gapi.signin2.render
per rendere il pulsante e collegare un gestore ad esso nel mio controller Angolare.
La registrazione funziona correttamente, il problema è che quando provo a disconnettermi chiamando lo gapi.auth2.getAuthInstance().signOut()
, semplicemente non lo fa.
Ho notato che sessionStorage per accounts.google.com è ancora lì, e per questo motivo Google mi ricollega automaticamente quando rendo il pulsante di nuovo nella schermata di accesso.
ho cercato di vedere cosa succede dopo signOut()
è completa:
gapi.auth2.getAuthInstance().signOut().then(function() {
console.log(gapi.auth2.getAuthInstance().isSignedIn.get());
// prints 'true'
});
Ho anche provato a chiamare disconnect()
invece di signOut()
, sapendo che sarà revocare l'accesso, e lo fa rimuovere token dal sessionStorage, ma sessione utente è ancora qui. È sparito solo quando ricarico la pagina.
Ecco il mio codice completo:
$scope.logout = function() {
//...
gapi.auth2.getAuthInstance().signOut().then(function() {
console.log(gapi.auth2.getAuthInstance().isSignedIn);
});
};
$scope.processAuth = function(authResult) {
console.log("success");
if(authResult.getAuthResponse().id_token) {
// backend calls
}
};
$scope.renderSignInButton = function() {
console.log(gapi.auth2);
gapi.signin2.render('signInButton',
{
'onsuccess': $scope.processAuth, // Function handling the callback.
'onfailure': $scope.signinFailed, // Function handling the callback.
'clientid': 'asdasdasd.apps.googleusercontent.com',
'scope': 'https://www.googleapis.com/auth/userinfo.email',
'cookiepolicy': 'single_host_origin'
}
);
};
$scope.renderSignInButton();
Ho le stesse circostanze che si hanno, (un sito con codeign, accesso angolare e Google) ma non ho problemi a rimuovere l'accesso. quando dici che la tua sessione utente è ancora lì, intendi la sessione personalizzata del tuo sito o l'istanza auth di google? questo è il mio codice e funziona perfettamente 'function googleSignOut() { \t \t var auth2 = gapi.auth2.getAuthInstance(); \t \t auth2.signOut(). Then (function() {myPostToDeleteMySiteSession();}); \t \t auth2.disconnect(); \t \t \t \t} ' – UrielUVD