You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Google OAuth 2.0的Refresh Token?当前仅返回Access Token

解决Google OAuth2获取Refresh Token的问题

要获取Refresh Token,你需要在initTokenClient的配置中添加两个关键参数,并正确处理返回结果:

核心修改点

  • 添加access_type: 'offline':这是获取Refresh Token的必要条件,告知Google你的应用需要离线访问权限,允许在用户未主动登录时通过Refresh Token刷新Access Token。
  • 添加prompt: 'consent':若用户此前已授权过相同权限范围,Google默认不会重复返回Refresh Token。该参数会强制用户重新确认授权,确保你能拿到Refresh Token(首次授权时可省略,但添加后能覆盖所有场景)。

修改后的代码

authenticate() {
  const client = google.accounts.oauth2.initTokenClient({
    client_id: 'MY_CLIENT_ID',
    scope: [
      "All_NECESSARY_SCOPES",
    ].join(" "),
    access_type: 'offline', // 启用离线访问,触发Refresh Token返回
    prompt: 'consent', // 强制重新授权,确保获取到Refresh Token
    callback: (res) => {
      this.accessToken = res.access_token
      this.refreshToken = res.refresh_token // 新增:保存Refresh Token
      this.loadClient()
    }
  })
  client.requestAccessToken()
},

重要注意事项

  • Refresh Token仅在首次授权或用户重新同意授权时返回,后续登录若用户未取消授权,响应中不会包含该字段。因此必须将获取到的Refresh Token安全存储在服务器端(禁止存在客户端本地),后续用它来刷新Access Token。
  • 确认Google Cloud控制台中,你的OAuth 2.0客户端ID配置未限制离线访问权限。

内容的提问来源于stack exchange,提问作者Yuval Levi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 05:30:47