Używam Google Login przez JS i wygląda na to, że mój kod pobiera dane dwa razy. Nie jestem pewien, dlaczego tak się dzieje.Google Zaloguj się dwukrotnie?
Po kliknięciu przycisku "Zaloguj się za pomocą Google", wypluwa dane (console.log (result)) dla użytkownika. Następnie pojawia się monit o wybranie mojego konta (jestem zalogowany na kilka kont Google). Gdy kliknę odpowiednie konto, kod ponownie wypisze te dane użytkownika.
Dlaczego tak się dzieje? Jest to problem, ponieważ gdzie wypluć dane, chciałbym wywołać wywołanie ajax, aby zweryfikować użytkownika, a następnie przekierować je. Więc, w istocie, próbuje to zrobić dwa razy - co nie jest fajne, a co jeśli nie chcę się logować za pomocą poświadczeń, google przekazuje za pierwszym razem?
(function() {
var po = document.createElement('script');
po.type = 'text/javascript'; po.async = true;
po.src = 'https://apis.google.com/js/client:plusone.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(po, s);
})();
function googleLogin() {
var additionalParams = {
'callback': googleCallback
};
gapi.auth.signIn(additionalParams);
}
function googleCallback(authResult) {
if (authResult['status']['signed_in']) {
gapi.client.load('oauth2', 'v2', function() {
gapi.client.oauth2.userinfo.get().execute(function(resp) {
console.log(resp);
})
});
} else {
console.log('Sign-in state: ' + authResult['error']);
}
}
Aktualizacja: Gdybym wylogować się ze wszystkich moich kont Google (z wyjątkiem jednego i tylko jednego), wezwanie do Google jest wciąż powielane. Tym razem loguje się i widzę dwa razy dane wyjściowe konsoli.log(). Tokeny dostępu są identyczne.
Aktualizacja 2: console.log (odpowiednio) jest wyprowadzanie dwukrotnie
Update 3: tylko bardziej Wyjaśnienie:
co widzisz jest emitowany dwa razy? "console.log (resp);" lub "console.log (" Sign-in state: '+ authResult [' error ']); "; Zakładam, że to później? –
console.log (resp); informacje o użytkowniku dwa razy. W moim oryginalnym wpisie najpierw jest to domyślny użytkownik. A następnie informacje użytkownika o wybranym przez siebie akcie. W mojej aktualizacji jest to wartość domyślna dwukrotnie. – Mike
Kiedy postępowałem zgodnie z tutorialem tutaj https://developers.google.com/+/web/signin/javascript-flow, ale użyłem twojego kodu w "gapi.client.load", "console.log (resp);" jest wywoływany tylko raz. –