【问题标题】:How to sign out using Google Identity API?如何使用 Google Identity API 退出?
【发布时间】:2021-10-25 08:34:29
【问题描述】:

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

这是退出代码:

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

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

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

【问题讨论】:

    标签: javascript api google-signin google-identity


    【解决方案1】:

    您在注销 onclick 处理程序中调用 disableAutoSelect() 是正确的,但它仅适用于并控制自动登录按钮的行为。它不会影响“一键式”或“使用 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 的登录流程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-18
      • 2015-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-22
      • 2019-06-19
      相关资源
      最近更新 更多