Ich benutze G + anmelden für meine Website und ich habe dieses Problem gefunden.G + Anmeldung Button Callback Bindung zweimal
Meine Website hat Symbolleiste (sein mit Javascript Render) und G + Login-Button auf, so lege ich G + Javascript-API in der Symbolleiste Datei
[toolbar-notlogin.php]
<script>
(function() {
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
po.src = 'https://apis.google.com/js/plusone.js?onload=render';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();
function render()
{
var config = {
"callback": "loginCallback",
"clientid": "xxxxxxxxx.apps.googleusercontent.com",
"cookiepolicy": "single_host_origin",
"requestvisibleactions": "http://schemas.google.com/AddActivity",
"scope": "https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/plus.me https://www.googleapis.com/auth/userinfo.email"
};
$('#googleCustomLoginBtn .buttonText').text('Login with Google');
gapi.signin.render ("gplusLoginBtn", config);
}
</script>
Wenn die Symbolleiste (mit G + JS API) geladen es ruft Callback-Funktion render() zum Rendern der G + Anmelde-Schaltfläche. Es funktioniert sehr gut, so dass meine Symbolleiste in den Anmeldungszustand wechselt (Profil des Benutzers anzeigen) und G + Anmelde-Taste weg ist (HTML ersetzt).
Wenn Benutzer abmelden die Status ändern, um sich nicht einzuloggen (HTML ersetzt erneut), rufen Sie render() erneut auf und die Schaltfläche Anmelden funktioniert.
Aber das Problem ist, wenn ich mich in dieser Zeit die Callback-Funktion anmelden (loginCallback()) zweimal aufgerufen. Es sieht so aus, als ob die Callback-Funktion erneut gebunden wird. (Ich versuche, render() nicht zum zweiten Mal aufrufen, aber die Schaltfläche Anmelden funktioniert nicht.)
Gibt es eine Möglichkeit, es zu beheben? Vielen Dank.
Haben Sie den Auftrag versucht, Kontrolle, in der alle Funktionen ausgeführt werden? Es ist ziemlich einfach zu tun, indem Sie einfach den Funktionsnamen zu Beginn jeder Funktion an die Konsole ausgeben. Es gibt Ihnen (und mir) mehr Einblick in was genau Happing ist. Außerdem: Kannst du eine jsfiddle.net Demo erstellen? Auf diese Weise können wir tatsächlich versuchen, einen Code zu entwickeln, der Ihnen hilft. – Korijn
Haben Sie das gelöst? Wenn ja, könnten Sie bitte die Lösung teilen? –
Dies könnte daran liegen, dass Google eine automatische Anmeldung versucht, wenn Sie mit Ihrem Google+ Konto verbunden sind und die App zuvor autorisiert haben. Testen Sie es inkognito mit Ihrem Konto abgemeldet. –