自动登录和退出

本页介绍了如何实现与用户使用 Google One Tap 登录或退出账号相关的功能。

自动让用户登录

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

自动登录功能旨在对“使用 Google 账号登录”按钮和一键登录对话框进行补充。它旨在用于整个网站,只有在用户首次退出网站后,才会手动注册或切换账号。

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

  • 用户必须先登录其 Google 账号,
  • 之前已同意与您的应用分享其账号个人资料,并且
  • 使用 FedCM 时,在过去 10 分钟内仅尝试登录过一次。 如果用户在此时间范围内重复尝试登录,系统会显示一键登录。
  • 使用 FedCM 时,Chrome 会要求用户在每个 Chrome 实例中重新确认是否要使用 Google 账号登录网站,即使该用户在 FedCM 推出之前已批准该网站。此变更可能会影响使用一键登录功能的现有网站的转化率。在 Chrome M121 更新中,自动登录改进缓解了转化率下降问题。

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

在 JavaScript 回调(callback 或 data-callback)中处理响应时,您可以使用返回的 CredentialResponse 对象的 select_by 字段中的 auto 值来衡量自动登录成功率。select_by 不包含在发送到 login_uri 或 data-login_uri 的 HTTP POST 请求中。

如需启用自动登录,请将 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 One Tap 提示的页面。对于此设置,必须禁止自动选择。否则,用户会自动重新登录,从而导致死循环用户体验。

使用 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();
}

为防止出现死循环用户体验,用户退出状态会存储在由 Google Identity 服务库设置的名为 g_state 的 Cookie 中。默认情况下,Cookie 网域会设置为当前网页的网域。如果一键登录在父网域和子网域中显示,则状态 Cookie 必须在您的所有网域中可见。使用 data-state_cookie_domain 属性将 g_state Cookie 网域设置为父级网域。例如,对于父网域 example.com 和名为 webapp.example.com 的子网域,请将 data-state_cookie_domain="example.com" 添加到 g_id_onload 元素。

如果您有服务会监控网域中使用的所有 Cookie,则需要向其通知 g_state Cookie。

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

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

关键用户体验历程

自动登录页面。

使用 FedCM

FedCM 自动登录弹窗

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

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

不使用 FedCM

自动登录弹出式窗口示例。

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

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

  • 多个 Google 会话

账号选择器页面示例

  • 单个 Google 会话

一键登录回访用户页面