首页 > 解决方案 > 如何“使用 Google 登录”(id_token)*和*接收特定范围的代码/access_token(用于后端)

问题描述

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

如果我理解正确,这可以通过“OAuth Hybrid Flow”来完成:Anid_token和 anauthorization_code在前面的通道上返回,但是敏感的access_token并且refresh_token只能在后面的通道上检索。

然而,谷歌似乎并没有提供这个功能。

我想象我的前端可以在 Google OAuth 流程之后同时接收 anid_token和 acode作为 URL 参数。然后,React 前端将POST同时id_token连接code到我的 Flask 后端。

然后后端将 1) 检查id_token2) 交换codearefresh/access token并将经过身份验证的会话 cookie 返回到前端。

现在我的问题:

谢谢!

标签: authenticationoauthgoogle-oauthopenid-connectgoogle-openid

解决方案


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

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

您不能同时获得 id_token 和 authorization_code,为什么?身份验证代码流是一个两步过程,因此您总是首先获得一个代码,然后您可以交换 id/访问令牌。

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


推荐阅读