使用 react-google-login 和 django-allauth

问题描述

我正在尝试将 Google Login 用于具有 React 前端和 Django 后端的 Web 应用程序。在前端,我使用 react-google-login 包来处理所有身份验证逻辑。在后端,我有 django-allauth 和社交登录适配器以及 Django Rest Framework (DRF)。

一切正常(即我得到了一个访问令牌并且可以很好地向 DRF 发出 API 请求),除了以下内容

  • 令牌仅在 1 分钟内有效(准确地说是 3599 秒 - 见附图)
  • 我似乎在任何地方都找不到刷新令牌。

我不知道该往哪里看:

  • 将会话延长到 1 分钟以上
  • 刷新以便我可以获得另一个访问令牌

需要注意的一件奇怪的事情是,当令牌过期时,刷新浏览器似乎会自动给我一个新令牌,我可以再次发出 API 请求。

这是我当前的反应代码

<GoogleLogin
    clientId={process.env.REACT_APP_GOOGLE_OAUTH_CLIENT_ID}
    buttonText="Continue with Google"
    onSuccess={handleGoogleOAuthResponse}
    onFailure={handleGoogleOAuthResponse}
    isSignedIn={true}
/>

enter image description here

解决方法

expires_in=3599 表示令牌将在 1 小时后过期。这里提到的时间以秒为单位。 1 分钟 = 60 秒。 1 小时 = 60 分钟。此外,1 小时 = 3600 秒。

id_token 此处用作系统的刷新令牌。