我想为我的应用使用谷歌登录。某些工作站在多个用户之间共享,因此在用户之间快速切换的能力非常重要。
登录按钮似乎允许这样做。 即,如果用户已"登录",则单击登录按钮将显示"选择帐户"对话框。
我可以通过简单地让按钮出现在每个页面上来实现这种快速更改功能。
但是,问题是每次加载页面时都会触发"成功"事件。这意味着每次加载页面时,我都会进行身份验证和创建会话。这似乎效率低下。
是否有一个事件可以让我区分用户是否已明确登录与谷歌检查用户是否已登录?
代码如下,根据文档。我已经阅读了 API 文档,但无法弄清楚。
谢谢
<script src="https://apis.google.com/js/platform.js" async defer></script>
<script>
function onSignIn(googleUser) {
var profile = googleUser.getBasicProfile();
console.log('ID: ' + profile.getId()); // Do not send to your backend! Use an ID token instead.
console.log('Name: ' + profile.getName());
console.log('Image URL: ' + profile.getImageUrl());
alert('Email: ' + profile.getEmail());
}
</script>
<meta name="google-signin-client_id" content="173138624956-ajom95asqea9p8f3ob0ntjvaalhf5r99.apps.googleusercontent.com">
<div class="g-signin2" data-onsuccess="onSignIn"></div>
您在这里使用了非常基本的声明性描述流。这基本上会自动检测class="g-signin2"
,呈现按钮并在可能的情况下使用户登录 - 没有任何选择。
你想要的可以通过使用这里描述的命令式流来实现(后半部分更重要)。
通过使用此方法,可以手动检查用户是否已登录并在需要时呈现按钮、让用户登录或按需注销。