获取Pinterest Access Token时遇invalid_grant错误求助
解决Pinterest OAuth获取Access Token时的"invalid_grant"错误
我之前也踩过Pinterest OAuth的这些坑,结合你的情况(Postman自动OAuth流程能成功,但手动调用接口就报错),给你梳理几个最可能的原因和对应的解决办法:
1. 授权码(code)已失效或重复使用
Pinterest的授权码是一次性的,而且有10分钟左右的有效期:
- 如果你已经通过Postman的OAuth流程用过这个code,再手动调用token接口肯定会返回
invalid_grant,因为code已经被消耗了。 - 解决办法:重新走授权流程生成一个全新的code,拿到后立刻调用token接口,不要超时。
2. 请求参数的传递方式错误
你现在把参数拼在URL的query里,但Pinterest的token接口要求参数放在**请求体(Body)**中,并且使用application/x-www-form-urlencoded格式编码:
- 错误的做法:把参数直接加在URL末尾(你当前的写法)
- 正确的做法:将参数放在请求体里,以表单形式提交。比如用curl的正确写法:
curl -X POST https://api.pinterest.com/v1/oauth/token \ -d "grant_type=authorization_code" \ -d "client_id=888888888888888" \ -d "client_secret=9999999999999999999999" \ -d "code=00000000000000" - 如果你用Postman手动调用,要选择
Body标签下的x-www-form-urlencoded,把参数一个个填进去,而不是拼在URL里。
3. 回调地址(redirect_uri)不一致
获取授权码时使用的redirect_uri,必须和调用token接口时的redirect_uri完全一致:
- 如果你在获取code时指定了redirect_uri,那调用token接口时也要传一模一样的地址;
- 如果你的应用在开发者控制台里配置了固定的回调地址,那获取code时必须用这个地址,否则会触发权限验证失败。
4. 请求头配置缺失
确保请求头里的Content-Type设置为application/x-www-form-urlencoded:
- Postman的自动OAuth流程会自动处理这个头,但手动调用或Java代码里很容易漏掉,导致服务器无法正确解析参数,进而返回
invalid_grant。 - 比如Java用RestTemplate的话,要设置
HttpHeaders的Content-Type,然后用MultiValueMap来存放参数。
建议你先从重新生成新的授权码+改用请求体传参数这两点开始排查,这是最常见的触发invalid_grant的原因。
内容的提问来源于stack exchange,提问作者margarita
相关产品推荐
相关产品推荐

