Ich benutze Google Plus als Login, was bis vor kurzem funktioniert hat. Jetzt kann sich der Benutzer nicht mehr abmelden. Der Rückruf funktioniert und gibt zurück, dass der Benutzer abgemeldet ist. Danach wird der Benutzer jedoch sofort erneut angemeldet. Es scheint, als würde es das Abmelden nicht speichern.gapi.auth.signOut() funktioniert nicht mehr ohne Änderungen implementiert
Es gibt ein paar ältere Fragen dazu wie zum Beispiel this one. Ich habe alle vorgeschlagenen Lösungen ausprobiert, aber nichts hat funktioniert.
Code im HTML-Kopf
<script src="https://apis.google.com/js/client:platform.js?onload=start" async defer></script>
Button-Code, die immer angezeigt wird (ausgeblendet, wenn angemeldet)
<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>
SignIn und SignOut Funktion
<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, haben Sie diese neue und verbesserte Methode, die ich verwende, überprüft? redigierte meine Antwort und es sollte dein Problem lösen. Wenn Sie es anders gelöst haben, bitte posten Sie Ihre Lösung, ich möchte verschiedene Ansätze untersuchen. Wer sagt, dass ich die Radquadratversion nicht neu erfinde? –
Hallo Tony, danke für das Hinzufügen einer Antwort. Ich löste es, indem ich zur Backend-Berechtigung wechselte, im Grunde, die gesamte Javascript-Implementierung loszuwerden. Ich kann Ihre Lösung leider nicht bestätigen. – Vincent
das ist in Ordnung @ Vincent, scheint wie ein paar Leute die Lösung überprüft und genehmigt. Da ich keine negative Bewertung habe, bin ich trotzdem mit dem Ergebnis der Bounty zufrieden. –