使用grant_type=password的curl请求获取API token返回invalid_grant错误如何解决
错误原因与排查方案
invalid_grant 是OAuth2协议的标准错误码,代表你提交的授权凭证校验不通过,常见原因和对应排查步骤如下:
常见原因
- 参数名大小写不匹配:官方文档给出的请求参数是
Password、Username首字母大写,你当前curl命令里用的是全小写的password、username,绝大多数接口的参数是大小写敏感的,这是最高概率的问题 - 接口地址拼写错误:你请求的地址是
https://enpoint/api/token,enpoint为拼写错误,需要替换为官方给出的真实域名 - MD5加密不符合要求:
- 确认你加密的原始串
ZCW2OQo5yhfmTKutGjiCWQ==确实是你的原始密码,没有多余的前后空格、换行等不可见字符 - 确认官方要求的MD5是小写还是大写格式,你当前生成的是小写格式,部分服务要求传入大写MD5值
- 确认官方没有要求MD5加密前加盐,或是其他预处理逻辑
- 确认你加密的原始串
- 用户名错误:确认你填写的
my_user_name是正确的账号名,没有拼写、大小写错误 - 缺少必要请求头:虽然curl默认会给POST表单请求加
Content-Type: application/x-www-form-urlencoded头,部分服务要求必须显式传入该头才会解析参数
排查步骤
- 先修正参数大小写和接口地址,执行以下命令测试:
curl -d "grant_type=password&Password=53a89a22375a3665cfe4cb92ee17992b&Username=my_user_name" -H "Content-Type: application/x-www-form-urlencoded" -X POST https://<替换为官方真实域名>/api/token
- 如果还是报错,重新生成MD5值,加密时确认原始密码没有多余字符,尝试把MD5值转为大写后替换参数再次请求
- 确认账号状态正常,可先在官方平台手动登录验证账号密码是否可用
内容的提问来源于stack exchange,提问作者mr_muscle
相关产品推荐
相关产品推荐

