Javascript 谷歌登录不在匿名模式下工作

Javascript 谷歌登录不在匿名模式下工作,javascript,angular,google-signin,Javascript,Angular,Google Signin,我在我的angular 9项目中使用了Google sign。我正在使用谷歌登录JSAPI。 它给出了一个错误当前环境中未启用Cookie在google chrome匿名模式下,尽管它在正常的google chrome选项卡中工作正常。下面是错误详细信息 details: "Cookies are not enabled in current environment." error: "idpiframe_initialization_failed" 了

我在我的angular 9项目中使用了Google sign。我正在使用谷歌登录JSAPI。 它给出了一个错误当前环境中未启用Cookie在google chrome匿名模式下,尽管它在正常的google chrome选项卡中工作正常。下面是错误详细信息

details: "Cookies are not enabled in current environment."
error: "idpiframe_initialization_failed"

了解在匿名模式下,默认情况下禁用第三方cookie,但解决方案是什么?我发现其他使用google登录的网站在google chrome匿名模式下工作得非常好。

如果我们想在匿名模式下维护任何数据,需要进行会话管理

Spring Session提供了一个API和实现,用于管理用户的会话信息,同时也使支持集群会话而不必绑定到特定于应用程序容器的解决方案变得简单。它还提供与以下各项的透明集成:

HttpSession:允许以与应用程序容器无关的方式替换HttpSession,并支持在头文件中提供会话ID,以便使用RESTful API

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


WebSession:允许以与应用程序容器无关的方式替换Spring WebFlux的WebSession。

Angular只是浏览器中的javascript。因此,加载angular应用程序的用户将从您的服务器获得一堆javascript。如果该服务器使用GoogleAPI处理身份验证,那么您的用户只与您的服务器进行交互(尽管通过重定向登录到google)

此身份验证流不需要第三方cookie

然而如果直接在用户浏览器中处理身份验证,则如果禁用第三方cookie(因为它们处于匿名模式),则应用程序将无法工作

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

如果我的应用程序有一个后端,那么用户可以给我的服务器访问他们的谷歌硬盘的权限,而不需要第三方cookie。此时,访问用户GDrive的不是前端javascript客户端(angular app),而是我的服务器

使用后端可以实现不同的、通常更安全的身份验证流。然而,对于用户来说,用户体验是相同的。这就是为什么在某些情况下,用户必须允许第三方cookie,而在其他情况下,用户则不允许


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

您可能正在使用涉及iFrame和cookie的
'ux\U模式”:“重定向”

尝试使用
弹出窗口
模式

另外,您提到“其他站点运行良好”-它们可能使用oAuth2身份验证流服务器端,这是基于重定向的


PPS。更多信息请参见“已知问题”

不,在弹出模式下,它的行为与默认的“弹出”模式相同。我目前也遇到了同样的问题。例如,我发现《纽约时报》的谷歌登录在“匿名”选项卡中运行良好。我看了一下它的内部,发现它的按钮和我的按钮有点不同。虽然我使用gapi(load、init、attachClickHandler),但《纽约时报》构建了自己的身份验证URL并将其放在按钮上。我曾尝试将cookie_策略设置为“无”,但没有效果。除非你像《纽约时报》那样做,否则不要认为它会在隐姓埋名的情况下起作用。我会让你对他们的来源进行反向工程。