本指南旨在帮助您了解 Chrome 即将停止支持第三方 Cookie 对您的插件的影响以及必要的更改。
概览
2024 年 1 月 4 日,Chrome 面向 1% 的用户推出了跟踪保护功能,该功能会默认限制网站访问第三方 (3P) Cookie。Chrome 预计将在 2025 年初完全停用第三方 Cookie。
Google 课堂插件中的至少两项用户体验历程受到影响:
- Google 单点登录 (SSO) 流程
- 将用户转到新标签页
Google 单点登录
在 Google SSO 流程中,系统会将用户定向到一个对话框,以便用户登录其 Google 账号并同意数据共享。
图 1. 在 iframe 中,SSO 期间三个不同 Cookie 上下文的可视化图示:(1) 顶级 Google 课堂应用、(2) 嵌入的第三方 iframe(在本例中为 localhost 上的 DavidPuzzle),以及 (3) 顶级 OAuth 对话框。
在典型的插件实现中,系统会在完成此登录流程后设置会话 Cookie。系统会重新加载位于嵌入式上下文中的插件 iframe,并附带会话 Cookie,以便用户访问其已通过身份验证的会话。不过,停用第三方 Cookie 后,嵌入式上下文(例如插件 iframe)中的网站将无法访问其各自的顶级上下文中的 Cookie。对于 Google 课堂插件,用户无法访问其已通过身份验证的会话,并会陷入登录循环。
对于在嵌入的 iframe 上下文中设置会话 Cookie 的实现,可以通过 CHIPS API 来缓解此问题,该 API 允许嵌入的网站设置和访问分区 Cookie(按嵌入者和嵌入网域设置键的 Cookie)。但是,在登录对话框的顶级上下文中设置会话 Cookie 的实现无法访问 iframe 中的未分区 Cookie,从而阻止登录。
新的标签
出于类似的原因,如果用户在插件 iframe 中拥有基于 Cookie 的身份验证会话,并且 iframe 会将用户引导至 activity 的新顶级标签页,则顶级标签页无法从 iframe 访问分屏会话 Cookie。这会阻止 iframe 会话状态保留到新标签页 activity,例如,可能会强制用户在新标签页中重新登录。CHIPS API 无法解决此问题,这是由设计决定的;分屏 iframe Cookie 在顶级上下文中无法访问。
开发者操作
在 Chrome 逐步淘汰第三方 Cookie 时,您应考虑采取以下几项措施,以确保您的插件继续按预期运行。
- 审核您的插件关键用户历程中的第三方 Cookie 使用情况。更具体地说,停用第三方 Cookie 进行测试,以评估对您的具体实现的影响。
探索 Storage Access API。对于所有插件实现,我们建议您探索 Storage Access API (SAA)。SAA 可让 iframe 在 iframe 上下文之外访问其 Cookie。SAA 现已在 Chrome 中推出,Google 课堂应用也支持 SAA。
选择启用 FedCM。此外,如果您使用 GIS(“使用 Google 账号登录”库),身份团队的官方指南是选择启用 FedCM。这并不会取代第三方 Cookie 功能,但随着第三方 Cookie 的弃用,GIS 最终将需要使用此功能。FedCM 现已在 Chrome 中推出,Google 课堂也支持该功能,但其行为和功能仍在开发中,欢迎您提供反馈。
迁移到 GIS。如果您使用已废弃的 GSIv2 库(也称为 Google 登录库),我们强烈建议您迁移到 GIS,因为我们尚不清楚未来是否会继续支持 GSIv2。
申请延长弃用试用期。Chrome 提供弃用试用版,让非广告用例可以延迟第三方 Cookie 弃用的效果。如果申请获批,我们会向您提供一个令牌,您可以在插件中使用该令牌,以便在 2024 年之前为您的来源启用第三方 Cookie,同时迁移到 SAA 等长期解决方案。申请后,系统会要求您提供 bug ID 或破坏报告链接。我们的团队已为 Google 课堂插件提交此问题,您可以提供此 bug。