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

如何修改Google Access Token的过期时间(PHP OAuth 2.0场景)

核心前提澄清

谷歌OAuth 2.0的*访问令牌(access_token)有效期固定为1小时,这个是谷歌平台的强制限制,没有任何办法手动调整延长。你了解到的200天最长有效期,实际是**刷新令牌(refresh_token)**的最长有效期,你要实现的长期免登录,本质是通过刷新令牌自动换新的访问令牌,不需要用户重复授权。

你现有代码已经配置了离线访问模式,只需要做以下调整就能实现最长200天的有效期支持:

必要配置调整

  • 首先把你谷歌云控制台的OAuth应用从「测试状态」改成「正式发布状态」:
    测试状态下的应用刷新令牌默认只有7天有效期,只有正式发布的应用才能拿到最长200天的刷新令牌。操作路径:谷歌云控制台 → API和服务 → OAuth同意屏幕 → 点击「发布应用」即可,非敏感权限的应用不需要提交官方审核即可生效。
  • 确认你的授权配置保留setPrompt('select_account consent')参数:
    刷新令牌仅在用户第一次授权时返回一次,加这个参数可以保证每次用户走授权流程时,都会重新下发刷新令牌,避免你丢失原有刷新令牌后无法重新获取。

现有代码优化点

你当前的自动刷新逻辑已经完全可用,只需要额外注意两个细节即可:

  1. 保存token.json的目录权限要保证可写,每次刷新访问令牌后,谷歌PHP客户端会自动把新的访问令牌和有效刷新令牌同步写入token.json,不需要你额外处理。
  2. 避免同一个用户频繁生成新的刷新令牌:同一个谷歌用户对同一个应用最多只能保留50个有效刷新令牌,超过上限后最早生成的刷新令牌会自动失效。

刷新令牌失效的常见场景

满足以下任意一种情况,刷新令牌会提前失效,需要用户重新授权:

  • 用户主动在谷歌账号的安全设置中,撤销了对你应用的授权
  • 你的应用连续6个月没有任何API调用请求
  • 你修改了OAuth同意屏幕的配置项(比如应用名称、图标、权限范围等)
  • 应用处于测试状态时生成的刷新令牌,在应用发布正式版后会全部失效

内容的提问来源于stack exchange,提问作者HIMANSHU SINGH

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:06:02