首页 > 解决方案 > 如何使用 Google Identity API 退出?

问题描述

我已使用 Google Identity API 登录用户。它在登录时完美运行。但注销不起作用我不知道为什么。

这是退出代码:

  const button = document.getElementById('signout_button');
   button.onclick = () => {
   google.accounts.id.disableAutoSelect();
   console.log('logged out');
};

但是即使按下按钮也不起作用。

我希望这个谷歌框在我退出后变成登录按钮,但它不起作用:

在此处输入图像描述

标签: javascriptapigoogle-signingoogle-identity

解决方案


通过调用disableAutoSelect()注销 onclick 处理程序,您正在做正确的事情,但它仅适用于并控制自动登录按钮的行为。它不会影响“一键式”或“使用 Google 登录”按钮。

为了进一步阐明登录的含义……有两个用户会话:

  1. 用户与其 Google 帐户之间的
  2. 在用户和您的应用程序之间

您将管理 2,但 1 不由您管理。For 1 用户可以从标签、浏览器或设备/操作系统登录到他们的 Google 帐户。这将确定哪个 Google 帐户具有活动会话。此会话的状态与您管理应用的登录或注销状态的 2 无关。

对于案例 2:登录到您的网站,在用户同意后您将收到来自 Google 的 JWT,并且可以继续更改您的应用的登录状态。跟踪登录状态的一种方法是使用 cookie。为了使这在 HTML 中更易于管理,该data-skip_prompt_cookie属性可让您使用 cookie 来控制是否显示“一键弹出”、自动登录选项。如果用户已登录,您通常希望禁止弹出窗口......并且 cookie 值跟踪登录状态。如果您使用 JavaScript,您只需跳过调用google.accounts.id.prompt即可,如果用户已经登录您的网站,则不会强制用户再次登录。

好的。既然我们已经介绍了几种方法来建立 2. 我们可以了解退出您的网站意味着什么...

要退出,请从您的button.onclick处理程序中清除data-skip_prompt_cookie或更改状态(如果您使用 JavaScript)以使用后端跟踪会话状态。然后,这将使您能够在退出用户回访您的站点时向他们显示一键式弹出窗口或自动登录提示。没有cookie意味着会显示登录提示,或者你的JS代码会调用google.accounts.id.prompt显示登录提示。

现在要真正彻底,还有一种情况需要注意。如果用户想要从您的站点中删除他们的帐户,您需要使用 google.accounts.id.revoke撤销同意共享他们的个人资料。这样做会在使用 One Tap、自动登录或使用 Google 登录按钮时停止共享 JWT。相反,流程将重新启动,并且系统会提示用户选择一个 Google 帐户并同意 - 有效地重新启动您的登录流程 2。


推荐阅读