使用refresh token仍报令牌过期/撤销及Bad Request的Google Ads API接入问题
Google Ads API
invalid_grant 类异常的产生原因与解决方法 核心异常产生原因
- 测试状态有效期限制:若OAuth应用未完成生产发布、仍处于测试阶段,所生成的refresh token固定7天后自动失效。如果授权用户不在应用配置的测试用户列表内,token的实际生效时间会进一步缩短,完全匹配“初次接入可稳定调用数天、重新授权后仅能维持1天正常”的表现。
- 多token自动冲突规则:同一个Google账号对应同一个OAuth客户端,最多仅能保留5个有效refresh token,当反复走授权流程生成新token时,最早生成的token会被自动作废。反复操作的过程会不断挤掉仍在有效期的token,最终陷入“失效-重新授权-再次快速失效”的循环。
- 风控触发吊销:满足任意以下场景时,Google会直接吊销已生成的refresh token,触发
invalid_grant: Token has been expired or revoked报错:- 关联账号修改密码、在第三方授权管理页主动移除对该OAuth应用的授权
- 调用API的网络出口IP频繁变动、跨地域跳变,被判定为异常访问
- 6个月内完全未使用该refresh token调用接口,触发长期闲置自动过期
invalid_grant: Bad Request专属触发场景:短时间内高频触发授权、刷新token接口,触发Google的接口速率限制;或配置文件内的client_id、client_secret参数存在拼写错误、首尾多余空格,导致请求参数校验不通过。
对应落地解决方法
- 调整OAuth应用发布状态:在Google Cloud控制台的OAuth应用设置页面,将应用从测试状态切换为生产状态。切换完成后生成的refresh token将不再受7天有效期限制,可实现长期有效、免重复授权。
- 规范refresh token的使用流程:日常调用时优先使用已存储在配置文件中的refresh token,仅在token确认被永久吊销时再走重新授权流程,避免生成过多token触发自动作废规则。
- 规避风控吊销场景:
- 部署服务时固定API调用的出口网络IP,避免频繁切换代理、跨地域节点
- 不要随意调整关联Google账号的安全配置,定期在账号安全页确认对应OAuth应用的授权状态未被移除
- 不要将配置文件、refresh token同步到公共代码仓库、公开可访问的存储位置,避免被恶意爬取触发批量吊销
- 处理
invalid_grant: Bad Request报错:- 逐行校验配置文件内的
client_id、client_secret、refresh_token字段,确认无拼写错误、无首尾多余空格 - 暂停短时间内的反复授权操作,等待1~2小时的接口限制解除后,再重新走一次完整的授权流程生成新的refresh token
- 如果仍持续报错,可在Google Cloud控制台重新创建一个桌面端类型的OAuth客户端,使用全新的
client_id、client_secret重新走授权流程,通常可彻底解决参数层面的校验异常。
- 逐行校验配置文件内的
内容的提问来源于stack exchange,提问作者the_economist
相关产品推荐
相关产品推荐

