使用Google PHP SDK对接Google My Business时Refresh token失效报invalid_grant
Google OAuth refresh token短时间失效问题排查方向
- 首先检查你的Google Cloud项目的OAuth同意屏幕状态:如果是测试模式,所有授权产生的refresh token默认有效期只有7天,到期就会自动失效,只要把应用切换为正式发布状态即可解决。
- 检查refresh token的存储逻辑:同一个用户、同一个客户端ID最多只能保留50个有效的refresh token,如果你每次授权都生成新token但没有覆盖本地存储的旧token,超出数量限制后最早生成的token会自动失效,要确保每次拿到新的refresh token都同步更新本地存储。
- 检查授权请求的参数配置:refresh token仅在用户第一次授权时返回,如果你后续的授权请求没有携带
access_type=offline参数,或者没有设置prompt=consent强制用户再次同意授权,就无法拿到新的有效refresh token,继续使用旧token就会触发invalid_grant错误。 - 排除用户主动撤销授权的情况:如果用户在自己的Google账号安全设置中手动取消了对你的应用的授权,已有的refresh token会直接失效,这种场景只能引导用户重新完成授权流程。
- 特殊场景排查:如果授权用户的谷歌账号开启了高级保护程序、或者账号存在异常被谷歌触发安全限制,也会导致所有关联的授权refresh token批量失效。
内容的提问来源于stack exchange,提问作者Mohammad Mehdi Habibi
相关产品推荐
相关产品推荐

