[英]Session object storing JWT + handling refresh tokens in node.js backend
[英]From Google JWT to Access and Refresh tokens using React and Node.js
我有一个 MERN 应用程序,我想在我的应用程序中获得以下行为:
@react-oauth/google
package 中的GoogleLogin
组件通过 google 登录我设法通过react-google-login
package 中的GoogleLogin
完成了这项工作,它为您提供了一个可以在后端交换令牌的代码。 但是这个库最近已被弃用(当我尝试使用此按钮登录时,我收到此错误: idpiframe_initialization_failed
)。 我不知道如何使用这个库了。
这是我用来登录的代码:
<GoogleOAuthProvider clientId={"MY_CLIENT_ID"}>
<GoogleLogin
onSuccess={this.onSuccess}
onFailure={this.onFailure}
/>
</GoogleOAuthProvider>;
这是我登录成功时得到的object:
{
clientId: "MY_CLIENT_ID"
credential: "JWT_string"
select_by: "btn"
}
我不确定这是为了获取访问和刷新令牌以在后端使用的正确方法,或者是否有更好的方法来使用新的 Google 身份服务 SDK。
真是巧合,我目前正在写博客来解释 OIDC,OAuth。 和新的谷歌身份服务,不知何故我看到了这个问题。
让我先给出一个 TLDR 版本来解释不同的response_type 。
access_token
和refresh_token
是具有 response_type=token 的隐式流和具有 response_type=code 的授权代码流的一部分,如OIDC 1.0 核心规范中所定义。如果您想使用不同的身份验证方法,这是一个小的演示链接。
我想从这个 JWT 中“提取”访问和刷新令牌(以某种方式对其进行解码?)
我不这么认为。 因为id_token
从来就不是为了这个目的。
我想永久存储令牌,以便我可以随时访问用户的日历
我建议不要使用id_token
,因为您需要access_token
和refresh_token
。 您可以考虑以下流程:
response_type=code
的授权代码流来获取code
。code
通过向https://oauth2.googleapis.com/token
发出 POST 请求来获取refresh_token
。 (响应也将包含 access_token。忽略它。)或者您也可以使用google-api-nodejs-client库。https://www.googleapis.com/oauth2/v4/token
发出POST
请求以获取access_token
。{
"grant_type": "refresh_token",
"refresh_token": "YOUR_REFRESH_TOKEN",
"client_id": "YOUR_VALUE.apps.googleusercontent.com",
"client_secret": "YOUT_SECRET_VALUE"
}
如果有帮助,请告诉我。 干杯。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.