Google OAuth获取Access Token遇invalid_grant错误求助
解决Google OAuth API的invalid_grant错误
结合你测试凭证可用、审核应用报错的场景,以下是具体问题排查和解决方向:
常见原因及修复方法
授权码重复使用或过期
Google的authorization_code仅能使用一次,且有效期仅约10分钟。如果审核应用复用了已用过的授权码,或者请求时授权码已超时,就会触发该错误。解决方式:每次获取AccessToken前,必须引导用户重新完成授权流程,拿到全新的授权码再发起请求。重定向URI不匹配
审核应用的OAuth配置中,必须添加与请求里redirect_uri完全一致的地址(包括协议https、路径、大小写)。测试应用可能已正确配置该URI,但审核应用的Google Cloud控制台OAuth客户端ID配置里漏加或写错了。去对应控制台检查审核应用的已授权重定向URI列表,确保和https://app.gettheme.io/data-setup完全一致。客户端凭证不匹配
确认审核应用使用的client_id和client_secret是该应用专属的凭证,而非测试应用的。很多时候会误把测试凭证用到审核应用中,导致验证失败。用户授权状态变更
如果用户之前授权过审核应用但后续撤销了授权,或者审核应用的权限范围(scopes)发生了变更,也会引发invalid_grant。解决方式:引导用户重新完成授权流程,确保授权状态正常。
整理后的请求代码参考
url = "https://accounts.google.com/o/oauth2/token" payload = { "client_id": "xxxx.apps.googleusercontent.com", "client_secret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx", "code": "x/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "grant_type": "authorization_code", "redirect_uri":"https://app.gettheme.io/data-setup" } # 错误响应 response = { "error": "invalid_grant", "error_description": "Bad Request" }
优先排查授权码和重定向URI这两个最常见的问题,一般能解决该错误。
内容的提问来源于stack exchange,提问作者Honey Anand2
相关产品推荐
相关产品推荐

