Google Sheets OAuth同账号重复测试不返回Refresh Token解决方法
Google OAuth重复授权不返回refresh token的测试解决方案
问题表现
- 搭建的Google Sheets OAuth授权流程多数场景可正常运行:首次授权成功后接口会正常返回
refresh token与access token,后续通过refresh token生成新access token的环节无异常 - 测试阶段遇到卡点:同一Google账号只要之前完成过一次授权、已被发放过
refresh token,之后再次走完完整OAuth授权流程,哪怕所有步骤都正常执行,接口响应中也不会再返回refresh token。这就导致同一个邮箱账号仅能完成一次同场景授权测试,想重复开展测试必须注册大量真实邮箱账号,测试成本极高。
原因说明
这是Google OAuth的默认设计逻辑:如果用户已经对当前应用授予过对应范围的权限、且没有手动撤销授权,重复发起授权请求时不会重复弹出权限同意页,也不会重复下发新的refresh token,仅返回新的短效access token。
解决方法
拼接OAuth授权请求URL时,追加prompt=consent参数即可。
加上该参数后,每次发起授权流程都会强制弹出权限确认页面,无论该账号之前是否已经给当前应用授过权,走完授权流程后接口都会正常返回新的
refresh token,完全支持用同一个测试账号反复开展授权流程测试,不需要额外注册大量测试邮箱。
该方案的相关讨论可参考Stack Overflow问题帖《Not receiving Google OAuth refresh token》。
内容的提问来源于stack exchange,提问作者user3689720
相关产品推荐
相关产品推荐

