Google 登录在隐身模式下不起作用

新手上路,请多包涵

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

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

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

原文由 Md. Mustafizur Rahman 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 401
1 个回答

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

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

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

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

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

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

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

原文由 Mrk Sef 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏