You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

获取Google OAuth Access Token请求失败求助

获取Google OAuth Access Token请求失败求助

嘿,我之前也踩过这个invalid_grant的坑,给你梳理几个最可能的原因和排查步骤,应该能帮你解决:

1. 先检查POST参数格式——这是最常见的错误!

你提到用了x-www-form-urlencoded格式的请求体,但注意到你写的参数里给值加了引号(比如grant_type="refresh_token"),这可是大忌!在这种格式里,参数值绝对不能加引号,引号会被当成值的一部分传给Google,导致它识别不了你的请求,直接返回无效授权。

正确的参数写法应该是这样的(去掉所有引号):

grant_type=refresh_token
client_id={你的MY_CLIENT_ID}
client_secret={你的MY_CLIENT_SECRET}
refresh_token={你拿到的刷新令牌}

在Postman里,直接在「Body」的「x-www-form-urlencoded」选项里逐个添加键值对就行,不用手动写带引号的字符串,Postman会自动帮你处理格式。

2. 确认客户端信息完全匹配

你用来换access token的client_idclient_secret,必须和你获取授权码(也就是第一步调用/auth接口)时用的完全一致,包括大小写、有没有多余空格,哪怕差一个字符都会触发这个错误。

3. 检查refresh token的有效性

  • 首先要确认你拿到的真的是refresh token,而不是access token——refresh token通常是更长的字符串,正常情况下不会过期(除非用户取消了对你应用的授权、你的应用是测试状态(Google会给测试应用的refresh token设7天有效期),或者你生成了超过限制数量的refresh token)。
  • 可以让用户登录Google账号,去「安全」→「第三方应用访问权限」里看看你的应用是否还在列表中,如果用户不小心取消了授权,refresh token就直接失效了,这时候得重新走授权流程拿新的。

4. 检查Postman的请求设置

  • 确保请求的Content-Type头是application/x-www-form-urlencoded,不要选成form-data或者raw格式,不然参数解析会出错。
  • 删掉所有多余的自定义请求头(比如不必要的Authorization头),这个换token的请求不需要额外的身份验证头。

先从参数引号的问题排查起,这个概率最高,要是还不行再检查后面的步骤,应该就能解决啦!

备注:内容来源于stack exchange,提问作者Nate

火山引擎 最新活动