0
我正在將Google登錄集成到我的網絡應用中。我遵循here的指示。但是我無法從登錄中獲取任何用戶信息。登錄按鈕雖然工作得很好。網絡應用Google登錄
<meta name="google-signin-client_id" content="3*****-c*******************.apps.googleusercontent.com">
<script src="https://apis.google.com/js/platform.js" async defer></script>
<div class="g-signin2 googleSignIn" data-onsuccess="onSignIn"></div>
我使用這些JavaScript函數:
if (auth2.isSignedIn.get()) {
var profile = auth2.currentUser.get().getBasicProfile();
console.log('ID: ' + profile.getId());
console.log('Full Name: ' + profile.getName());
console.log('Given Name: ' + profile.getGivenName());
console.log('Family Name: ' + profile.getFamilyName());
console.log('Image URL: ' + profile.getImageUrl());
console.log('Email: ' + profile.getEmail());
email=profile.getEmail();
}
}
此功能將導致一個錯誤:auth2沒有定義。 如果我在函數之前使用window.onLoadCallback = function()
,那麼它在日誌中不會發生錯誤,也不會發生任何錯誤。如果我只用這個代替:
function onSignIn(googleUser) {
var id_token = googleUser.getAuthResponse().id_token;
console.log("done");
}
再次我得到沒有錯誤,但也沒有在控制檯日誌中。
這個錯誤,現在來了:'未捕獲的對象{錯誤:「popup_closed_by_user」}' 我不關閉任何彈出窗口。只要點擊Google登錄按鈕後彈出窗口登錄到我的帳戶,就會發生錯誤。如果我已經登錄,那麼一旦我加載頁面,錯誤就會出現。 –
嘿!它適用於我允許彈出式窗口。但是用戶的瀏覽器默認不會啓用此功能。現在,只要頁面加載而沒有點擊登錄按鈕,登錄彈出即會出現。 –
調用'auth2.signIn()'將加載當前會話或彈出選擇賬戶屏幕(如果不存在按設計的會話)。您可以在調用signIn()之前檢查會話是否存在,以避免彈出:'if(auth2.isSignedIn.get()){auth2.signIn(); }'。也就是說,如果它存在,加載會話,否則,延遲調用'signIn()'直到必要。 –