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

测试模式下Google第三方应用连接断开及令牌报错咨询

问题原因及解决办法

核心原因

  • 测试应用的refresh token有效期限制:Google对未发布的测试应用有严格权限管控,refresh token默认仅7天有效期。过期后无法用来刷新access token,就会触发refresh token must be passed in or set as part of setAccessToken错误,这就是每周连接断开的直接原因。
  • 未开启离线访问授权:如果授权流程没明确请求offline访问类型,Google不会返回长期有效的refresh token,只给短期access token,过期后自然续期失败。

解决步骤

  • 重新授权时强制请求离线访问:生成授权URL时必须添加access_type=offline和prompt=consent参数,确保获取到可续期的refresh token。Laravel中代码示例:
    $client = new Google_Client();
    $client->setAccessType('offline');
    $client->setPrompt('consent'); // 强制用户重新授权,确保返回refresh token
    
    重新引导用户完成授权后,就能拿到有效期7天的refresh token(测试应用下的上限)。
  • 完善token存储与刷新逻辑:确保代码正确存储refresh token,每次调用API前先检查access token是否过期,过期则用refresh token刷新。示例代码:
    $client->setAccessToken($storedToken);
    if ($client->isAccessTokenExpired()) {
        if ($refreshToken = $client->getRefreshToken()) {
            $newToken = $client->fetchAccessTokenWithRefreshToken($refreshToken);
            // 把新的access token和原refresh token一起保存
            $newToken['refresh_token'] = $refreshToken;
            // 更新数据库/缓存中的token数据
        } else {
            // 无refresh token,需引导用户重新授权
        }
    }
    
  • 提交应用审核转为正式版:如果要彻底摆脱7天有效期限制,需要在Google Console提交应用审核,发布为正式应用。审核通过后,refresh token只要用户不主动撤销授权,就不会过期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 13:23:12