如何解决Postman获取新Access Token时的报错问题?
问题描述
配置信息
Auth type: Oauth 2.0 Client Id: provided Client Secret: provided grant_type: client_credentials
在Postman中点击「Get New Access Token」按钮获取访问令牌时,控制台抛出错误:
Error: []
尽管请求显示成功,但仍出现该错误。请求返回体如下:
{"tokenData":{"access_token":"access-token-here","token_type":"Bearer","expires_in":31556926},"errors":[],"success":true}
推测Postman默认期望的返回格式是:
{"access_token":"access-token-here","token_type":"Bearer","expires_in":31556926}
解决方法
Postman的OAuth 2.0令牌解析逻辑默认只识别返回体中直接存在的access_token等字段,不会自动解析嵌套在tokenData里的内容,可通过两种方式解决:
调整API返回格式(若有权限修改后端):让接口直接返回扁平结构的令牌数据,即你推测的那种格式。
使用Postman自定义令牌解析脚本:
- 在Postman的「Authorization」标签页,选择OAuth 2.0类型,点击「Configure New Token」。
- 在弹出窗口切换到「Advanced」标签。
- 在「Token Request Script」区域输入以下脚本:
pm.sendRequest({ url: pm.variables.get("tokenUrl"), method: 'POST', header: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: { mode: 'urlencoded', urlencoded: [ {key: "client_id", value: pm.variables.get("clientId")}, {key: "client_secret", value: pm.variables.get("clientSecret")}, {key: "grant_type", value: "client_credentials"} ] } }, function (err, res) { if (err) { console.log(err); } else { const responseData = res.json(); pm.environment.set("access_token", responseData.tokenData.access_token); pm.environment.set("token_type", responseData.tokenData.token_type); pm.environment.set("expires_in", responseData.tokenData.expires_in); } }); - 保存配置后,点击「Get New Access Token」即可正常获取并解析令牌。
内容的提问来源于stack exchange,提问作者Carl Ortiz
相关产品推荐
相关产品推荐

