.Net调用Google OAuth2 HttpPost接口时refresh_token缺失问题
谷歌OAuth兑换access_token时refresh_token缺失排查方案
- 首先修正参数位置错误:你当前将
access_type=offline、prompt=consent、approval_prompt=force三个参数放在了授权码兑换POST请求中,这三个参数仅对用户授权跳转的GET请求生效,兑换阶段传参不会生效,必须将其迁移到用户跳转谷歌授权页的请求参数里。 - 确认授权流程是否触发了用户同意确认:谷歌仅会在用户首次授权应用、或者授权请求中配置了
prompt=consent强制用户二次确认授权时,才会返回refresh_token,普通静默授权流程不会下发refresh_token。 - 若你此前已经使用同个谷歌账号给当前应用授权过,没有配置强制确认的情况下拿到的授权码兑换时不会返回refresh_token,你可以先到谷歌账号的第三方应用访问权限管理页删除当前应用的授权记录,再重新走授权流程验证。
- 确认你的OAuth客户端ID类型为Web应用类型,且兑换请求中传入的
redirect_uri与谷歌云控制台中该客户端登记的回调地址完全一致,协议、域名、路径、末尾斜杠都不能有差异。 - 检查授权请求的
prompt参数没有配置冲突值,多个参数值需要用空格分隔,示例合法配置为prompt=consent select_account。
内容的提问来源于stack exchange,提问作者Dhana
相关产品推荐
相关产品推荐

