Oauth 2.0 允许用户使用Google帐户登录我的网站,而不使用3d party Cookie
我一直在遵循非常简单的说明(“将Google登录集成到您的web应用程序”)Oauth 2.0 允许用户使用Google帐户登录我的网站,而不使用3d party Cookie,oauth-2.0,google-api,google-oauth,google-login,Oauth 2.0,Google Api,Google Oauth,Google Login,我一直在遵循非常简单的说明(“将Google登录集成到您的web应用程序”) 虽然它在Chrome83中可以工作,但我在JavaScript控制台中收到关于第三方cookie的警告。事实上,当我的用户(其中一些禁用了第三方cookie)尝试登录按钮时,它会闪烁一个窗口,但什么也没有发生 在“疑难解答”下的文档中,它说“如果您的许多用户启用了此功能……另一个解决方法是实现服务器端OAuth 2.0流。” 嗯。那么,服务器端OAuth2.0流是什么意思呢 (FWIW我的应用程序是一个React单
虽然它在Chrome83中可以工作,但我在JavaScript控制台中收到关于第三方cookie的警告。事实上,当我的用户(其中一些禁用了第三方cookie)尝试登录按钮时,它会闪烁一个窗口,但什么也没有发生
在“疑难解答”下的文档中,它说“如果您的许多用户启用了此功能……另一个解决方法是实现服务器端OAuth 2.0流。”
嗯。那么,服务器端OAuth2.0流是什么意思呢
(FWIW我的应用程序是一个React单页应用程序)。上有一般信息。这里有一种方法:
-注册为您拥有的谷歌云项目的一部分,使用云控制台(当前在API&Services/OAuth许可屏幕下)CLIENT_ID
-应用程序中必须在该项目中注册的URI重定向\u URI
-我使用它来保存希望用户发送到的最终URI状态
-防止重播攻击NONCE
REDIRECT\u URI?state=state&code=code
STATE
是您在前面的链接中提供的STATE
,code
是身份验证代码
code
,CLIENT\u ID
,CLIENT\u SECRET
(注册应用程序时在云控制台中提供),重定向\u URI
,来处理对该重定向\u URI
的请求,和GRANT\u TYPE
(字符串authorization\u code
)
对该请求的JSON响应将包括一个名为id\u token
的字段。该id\u令牌
是一个JWT,其中包括sub
字段中用户的已验证电子邮件地址
然后,您可以使用该用户信息建立自己的会话,并为其设置第一方cookie。您可以使用GoogleAuth库或第三方库验证和解析JWT
重定向\u URI
,将用户发送到应用程序的相应部分
这是相当详细的,但我在我创建的一个示例应用程序中完成了上面的操作,它为此工作。我希望它能适应您的需要。谢谢,这正是我需要的。它花了将近一天的时间才开始工作,我仍然需要解决一些重要的问题,比如注销,以及在令牌过期后在一个不可见的iframe中重新登录,但这绝对是使用google访问oauth2的正确方法。非常好的回答,谢谢!我在谷歌的文档中搜索了详细信息,找到了以下链接:。关于“服务器流”的部分允许您想要的内容—无需第三方cookie的用户身份验证。我构建了一个小应用程序,它使用谷歌端点进行身份验证,没有第三方cookis,而且运行良好。希望能有帮助。
<script src="https://apis.google.com/js/platform.js" async defer></script>
<meta name="google-signin-client_id" content="YOUR_CLIENT_ID.apps.googleusercontent.com">
<div class="g-signin2" data-onsuccess="onSignIn"></div>