谷歌登录成功功能在我阻止第三方cookie时没有任何作用

Google Signin onsuccess function does nothing when I block 3rd party cookies

本文关键字:cookie 作用 任何 第三方 成功 登录 功能 谷歌      更新时间:2023-09-26

我正在构建使用基本Google Signin进程 https://developers.google.com/identity/sign-in/web/的AngularJS应用程序。

一切正常,我可以以谷歌用户身份登录,但在禁用第三方 cookie 时遇到一个问题。

当第三方 Cookie 在此类浏览器上被禁用时 (Chrome)内容设置 Google 登录过程不执行任何操作。

更准确地说,我有一个函数,可以在谷歌按钮的成功事件上触发,但什么也不做。此外,我无法捕获错误,因此在此之后我无法解决。

正在发生的一件事是,当第三方cookie被禁用时,在加载谷歌元数据时,它会引发错误

Uncaught SecurityError: Failed to read the 'localStorage' property from 'Window': Access is denied for this document

似乎谷歌做得很好,就像它应该成功一样,但没有执行该成功函数中的代码。

我尝试了所有方法,甚至在谷歌开发人员网站上的集成登录页面上,当我单击示例登录按钮时,它也会发生相同的情况:

  • 如果我启用 cookie,它会返回给我"登录身份:MyName"
  • 如果我禁用 cookie,它不会向我返回任何内容

总体问题是,有没有办法捕获此错误并解决此问题,而不是让 google 像正常一样执行所有内容并且不执行 onsuccess 函数中的代码?

禁用第三方 Cookie 的用户无法访问弹出式 Google 登录。

这对我们来说是一个交易破坏者,因为第三方 cookie 是推荐的隐私实践(也是 Safari 中的默认设置)。 相反,有必要使用 Google API 生成身份验证 URL,之后您将收到带有令牌的回调。