如何 "sign in with Google" (id_token) *和* 接收特定范围的 code/access_token(对于后端)

How to "sign in with Google" (id_token) *and* receive a code/access_token for specific scope (for the backend)

我正在构建一个应用程序,用户应该可以在其中 使用 Google 登录,但之后,后端服务器需要访问来自用户的帐户(analytics.readonly 范围)。

如果我理解正确的话,这可以通过“OAuth Hybrid Flow”来完成:一个 id_token 和一个 authorization_code 在前面的通道上 returned,但是敏感的 access_tokenrefresh_token 只能在后台频道上检索。

然而,Google 似乎没有提供此功能。

我想象我的前端可以在 Google OAuth 流之后接收 id_tokencode 作为 URL 参数。 React 前端然后 POST id_tokencode 到我的 Flask 后端。

后端然后 1) 检查 id_token,2) 将 code 交换为 refresh/access token 和 return 一个经过身份验证的会话 cookie 到前端。

现在我的问题是:

谢谢!

我会在后端处理令牌管理,而不是在前端处理。

授权码仅作为授权码的一部分使用flow.The授权码只是一个随机令牌,不包含任何用户信息,因此您不能使用它来登录用户。

您不能同时获得 id_token 和 authorization_code,为什么?授权代码流程是一个两步过程,因此您总是先获得一个代码,然后您可以用它交换 id/access 令牌。

我会考虑观看这个 this 很棒的视频,了解如何处理 SPA 应用程序的身份验证。