Sto utilizzando Google Plus come login, che ha funzionato fino a poco tempo fa. Ora l'utente non può più uscire. Il callback funziona e restituisce che l'utente è stato disconnesso, ma dopo di ciò esegue immediatamente la registrazione dell'utente. Sembra che non stia memorizzando il logout.gapi.auth.signOut() ha smesso di funzionare senza modifiche implementate
Ci sono alcune vecchie domande su questo come ad esempio this one. Ho provato tutte le soluzioni proposte ma non ha funzionato.
Codice in testa html
<script src="https://apis.google.com/js/client:platform.js?onload=start" async defer></script>
codice del pulsante, che viene sempre visualizzata (nascosto quando connesso)
<div id="signinButton">
<span class="g-signin"
data-scope="https://www.googleapis.com/auth/gmail.readonly"
data-clientid="{{ CLIENT_ID }}"
data-redirecturi="postmessage"
data-accesstype="offline"
data-cookiepolicy="single_host_origin"
data-callback="signInCallback">
</span>
</div>
funzione SignIn e SignOut
<script>
function signInCallback(authResult) {
//console.log(authResult)
if (authResult['code']) {
var state = encodeURIComponent('{{ STATE }}');
var code = encodeURIComponent(authResult['code']);
var tz = encodeURIComponent($('#timezone').val());
var cntry = encodeURIComponent($('#country').val());
var lan = encodeURIComponent('{{ language }}');
// Send the code to the server
$.ajax({
type: 'POST',
url: '/signup/gauth',
contentType: 'application/octet-stream; charset=utf-8',
success: function(result) {
console.log(result)
if (result == 'Success') {
{% if not user %}window.location = "/user/home";{% else %}
console.log('Logged in');{% endif %}
}
},
processData: false,
data: 'code='+code+'&state='+state+'&country='+cntry+'&tz='+tz+'&language='+lan
});
}
else if (authResult['error']) {
console.log('Sign-in state: ' + authResult['error']);
}
}
function signOut() {
gapi.auth.signOut();
window.location = "/user/logout"
}
</script>
hey vincent, hai verificato questo metodo nuovo e migliorato che sto usando? ho modificato la mia risposta e dovrebbe risolvere il tuo problema. se l'hai risolto in modo diverso, per favore pubblica la tua soluzione, mi piacerebbe esaminare diversi approcci. Chi dice che non sto reinventando la ruota - versione quadrata? –
ciao Tony, grazie per aver aggiunto una risposta. Ho risolto il problema passando all'autorizzazione di back-end, praticamente eliminando l'intera implementazione di javascript. Purtroppo non posso confermare la tua soluzione. – Vincent
va bene @vincent, sembra che un paio di persone abbiano controllato la soluzione e l'abbiano approvata. Dal momento che non ho avuto recensioni negative, sono contento del risultato della ricompensa a prescindere. –