如何解决Google登录无法在隐身模式下运行
我已使用Google登录我的angular 9项目。我正在使用Google登录JS API。 尽管在正常的谷歌chrome浏览器选项卡中工作正常,但它给出了错误在当前环境中未启用Cookie 。下面是错误的详细信息。
details: "Cookies are not enabled in current environment."
error: "idpiframe_initialization_failed"
了解默认情况下,在隐身模式下,第三方Cookie处于禁用状态,对此有什么解决方案?我发现其他正在使用Google登录的网站可以在Google Chrome隐身模式下正常运行。
解决方法
Angular只是浏览器中的javascript。因此,从您的服务器向加载角度应用程序的用户提供了许多JavaScript。如果该服务器使用google-api处理身份验证,则您的用户仅与您的服务器进行交互(尽管带有重定向以登录google)。
此身份验证流程不需要第三方Cookie。
但是!!如果直接在用户浏览器中处理身份验证,则如果禁用了第三方Cookie(因为它们处于隐身模式),则您的应用将无法工作。
例如,我有一个通过Github页面提供的有角度的应用程序。 Github提供了该应用程序,但随后没有执行其他任何操作。由于我需要在用户的GDrive中创建文档,因此我全部通过javascript客户端进行身份验证和访问其资源。为了确保此功能安全运行,我的ap用户必须允许第三方Cookie。真的没有办法解决这个问题。
如果我的应用程序具有后端,则用户可以授予我的服务器访问其Google驱动器的权限,并且不需要第三方Cookie。那时,访问用户GDrive的不是前端javascript客户端(角度应用程序),而是我的服务器。
使用后端允许进行不同且通常更安全的身份验证流程。但是,对于用户而言,用户体验是相同的。这就是为什么在某些情况下用户必须允许第三方Cookie的情况,而在其他情况下则不允许。
通常,与确保用户的系统/浏览器的安全性相比,保护服务器的安全性要好得多。如果出于安全考虑,您实际上应该从服务器而不是从浏览器内进行API调用。这样做还可以解决您的问题。
,您可能正在使用'ux_mode': 'redirect'
,其中涉及iframe和cookie。
尝试使用popup
模式。
PS。您提到“其他站点正常运行”-它们可能正在使用基于重定向的oAuth2身份验证流服务器端。
PPS。更多信息https://developers.google.com/identity/sign-in/web/troubleshooting请参阅“已知问题”
,简单的解决方案可能是关闭 Block third-party cookies
。
转到您的隐身首页,您可以在底部看到 Block third-party cookies
将其转为
这个解决方案至少对我有用。
,如果我们想以隐身模式维护任何数据,则必须执行会话管理。
Spring Session提供了一种API和实现,用于管理用户的会话信息,同时使其轻松地支持集群会话,而不必依赖于特定于应用程序容器的解决方案。它还提供与以下内容的透明集成:
HttpSession:允许以与应用程序容器无关的方式替换HttpSession,并支持在标头中提供会话ID以与RESTful API一起使用。
WebSocket:当接收WebSocket消息时,可以使HttpSession保持活动状态
WebSession:允许以与应用程序容器无关的方式替换Spring WebFlux的WebSession。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。