自动登录和退出

本页介绍了如何实现与用户通过 Google 一键登录或退出登录相关的功能。

自动登录用户

Google 一键登录支持自动登录,免去了用户在返回您的网站时必须执行的手动步骤,从而提供顺畅的用户体验 (UX)。用户无需记住在上次访问时选择的 Google 帐号,从而降低了在您的平台上创建不必要的重复帐号的几率。

自动登录旨在补充我们的“使用 Google 账号登录”按钮和一键式对话框。它旨在用于整个网站,只有在用户首次退出您的网站后,您才需要手动注册或切换帐号。

要实现自动登录,必须满足以下条件:

  • 用户必须先登录其 Google 账号,并且
  • 之前已同意与您的应用共享其账号个人资料;以及
  • 在过去 10 分钟内仅尝试登录了 1 次。 在此窗口中,如果反复尝试登录,系统会显示“一键登录”。
  • 在使用 FedCM 时,Chrome 会要求用户在每个 Chrome 实例中重新确认他们想要使用 Google 帐号登录该网站,即使用户在 FedCM 发布之前批准了该网站也是如此。这项变更可能会影响您使用一键式功能在现有网站上实现的转化率。在 Chrome M121 更新中,自动登录改进缓解了转化率下降的问题。

对于启用了自动登录的网页,如果这些条件满足,系统会自动返回用户的 ID 令牌凭据,无需任何用户互动。如果不满足这些条件,即使在网页上启用了自动登录功能,用户也会默认使用一键式流程进行登录或同意。如果用户有多个 Google 帐号并访问您的网站,则需要先登录一个 Google 帐号,并已同意使用该帐号。

您可以使用返回的凭据对象的 select_by 字段中的 auto 值来衡量自动登录成功率。

如需启用自动登录,请将 data-auto_select="true" 添加到您的代码中,如以下代码段所示:

<div id="g_id_onload"
     data-client_id="YOUR_GOOGLE_CLIENT_ID"
     data-login_uri="https://your.domain/your_login_endpoint"
     data-auto_select="true">
</div>

退出账号

当用户从您的网站退出账号时,可以将其定向到自动显示 Google 一键提示的页面。对于此设置,必须禁止自动选择。否则,用户会自动重新登录,这会导致死循环用户体验。

使用 FedCM

为了提升用户体验,每次尝试自动登录之间都会有 10 分钟的静默期。在此期间,系统会改为显示一键快捷提示。用户需要明确点击“一键登录”才能登录。

不借助 FedCM

如需禁止在用户退出后自动选择,请将类名称 g_id_signout 添加到所有退出链接和按钮中。请参阅以下代码段:

<div class="g_id_signout">Sign Out</div>

以下 JavaScript 代码段也可用于退出登录:

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

因此,退出登录状态会通过您网域中的 Cookie 进行记录,从而避免死循环用户体验。

退出登录状态会存储到您网域中的 g_state Cookie 中。如果您通过某项服务监控您网域中使用的所有 Cookie,则需要将相应 Cookie 通知给他们。

如果您不想在登录后的页面加载客户端库,请使用以下解决方案来防止发生退出后死循环的用户体验:

  • 退出时,将用户重定向到未显示“一键登录”或始终停用自动登录的页面(例如 https://example.com/logged_out)。
  • 退出时,向该网址添加一个参数。例如 logged_out=1。通过 JavaScript API 呈现一键快捷功能时,请检查该网址参数并停用自动登录功能(如果存在)。

关键用户体验历程

自动登录页面。

使用 FedCM

FedCM 自动登录弹出式窗口

用户可以通过点击 X 按钮关闭一键式提示。出于无障碍方面的考虑,即使用户点击 X 按钮,系统也会与您的网站共享 ID 令牌。

为了提升用户体验,每次尝试自动登录之间都会有 10 分钟的静默期。在此期间,系统会改为显示一键快捷提示。用户需要明确点击“一键登录”才能登录。

不借助 FedCM

“自动登录”弹出式窗口。

如果用户在 5 秒内未点击取消按钮,系统会向您的网站共享一个 ID 令牌。

取消登录时,系统会根据活跃 Google 会话的数量显示帐号选择器页面或回访用户页面。

  • 多个 Google 会话

账号选择器页面

  • 单个 Google 会话

一键回访用户页面