谷歌登录无法在隐身模式下工作

Md.*_*man 16 javascript google-signin angular

我已经使用 Google 登录我的 angular 9 项目。我正在使用谷歌登录 js API。它给出了错误在谷歌浏览器隐身模式下的当前环境未启用 Cookies,尽管它在正常的谷歌浏览器选项卡中工作正常。以下是错误详情。

details: "Cookies are not enabled in current environment."
error: "idpiframe_initialization_failed"
Run Code Online (Sandbox Code Playgroud)

了解默认情况下在隐身模式下第三方 cookie 是禁用的,但对此的解决方案是什么?我发现其他使用谷歌登录的网站在谷歌浏览器隐身模式下完美运行。

Mrk*_*Sef 8

Angular 只是浏览器中的 javascript。因此,加载 angular 应用程序的用户正在从您的服务器获得一堆 javascript。如果该服务器使用 google-api 处理身份验证,则您的用户仅与您的服务器交互(尽管使用重定向登录 google)。

此身份验证流程不需要第 3 方 cookie。

然而!如果您的身份验证直接在用户的浏览器中处理,那么如果 3rd 方 cookie 被禁用(因为它们处于隐身模式),您的应用程序将无法运行。

例如,我有一个通过 Github 页面提供的 angular 应用程序。Github 为该应用程序提供服务,但随后不执行任何其他操作。因为我需要在用户的 GDrive 中创建一个文档,所以我从一个 javascript 客户端中验证和访问他们的资源。为了安全地工作,我的 ap 用户必须允许 3rd 方 cookie。真的没有办法解决这个问题。

如果我的应用程序有后端,那么用户可以授予我的服务器访问他们的 google 驱动器的权限,并且不需要 3rd 方 cookie。那时,访问用户 GDrive 的不是前端 javascript 客户端(角度应用程序),而是我的服务器。

使用后端允许不同且通常更安全的身份验证流程。然而,对于用户而言,用户体验是相同的。这就是为什么在某些情况下用户必须允许 3rd 方 cookie 而在其他情况下则不允许。

一般而言,您可以更好地保护服务器,而不是相信用户的系统/浏览器是安全的。如果安全是一个问题,您确实应该从服务器而不是从浏览器中进行 API 调用。这样做也应该可以解决您的问题。


Ale*_*lex 5

您可能正在使用'ux_mode': 'redirect'其中涉及 iframe 和 cookie。

尝试使用popup模式。

附注。您提到“其他网站完美运行”-他们可能正在使用基于重定向的 oAuth2 身份验证流服务器端。

聚苯乙烯。更多信息https://developers.google.com/identity/sign-in/web/troubleshooting请参阅“已知问题”

  • 不,在弹出模式下,行为是相同的 (3认同)

小智 -2

如果我们想在隐身模式下保存任何数据,就需要进行会话管理。

\n

Spring Session 提供了一个 API 和实现,用于管理用户\xe2\x80\x99s 会话信息,同时还可以轻松支持集群会话,而无需绑定到特定于应用程序容器的解决方案。它还提供透明的集成:

\n

HttpSession:允许以应用程序容器中立的方式替换 HttpSession,并支持在标头中提供会话 ID 以与 RESTful API 配合使用。

\n

WebSocket:提供在接收 WebSocket 消息时保持 HttpSession 处于活动状态的能力

\n

WebSession:允许以应用程序容器中立的方式替换 Spring WebFlux\xe2\x80\x99s WebSession。

\n