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()'直到必要。 –