Laravel Passport使用password grant_type获取token报invalid_client错误
问题解答
错误原因
invalid_client 错误核心是OAuth服务端验证客户端身份失败,结合你提供的请求参数和库表信息,常见触发原因如下:
- 请求传入的
client_secret和oauth_clients表中id=2记录的client_secret值不匹配,大小写、前后空格都会导致校验失败 - 客户端参数传递方式不符合服务端要求:部分OAuth实现要求
client_id、client_secret放在Basic Auth请求头中,不支持放在POST请求体里传递 oauth_clients表中id=2的客户端未开启password授权模式- 请求格式配置错误:提交时未设置
Content-Type: application/json请求头,导致服务端无法解析JSON格式的请求体 - 服务端配置缓存未更新,新增/修改的客户端配置未生效
解决方案
- 首先核对
oauth_clients表中id=2记录的client_secret字段值,和请求中传入的jScq3DMMeZctypnYb7f1ClEHyzybwTK1Yisqo09E完全一致,无多余空格、大小写匹配 - 调整参数传递方式:将
client_id:client_secret拼接后的字符串做Base64编码,在请求头中添加Authorization: Basic 编码结果,同时从请求体中删除client_id、client_secret两个参数后重试 - 检查
oauth_clients表中id=2记录的grant_types字段,确认包含password类型,若不包含则补充对应授权类型配置 - 确认请求头携带了
Content-Type: application/json,保证服务端可正常解析JSON请求体 - 若使用Laravel Passport等框架实现OAuth服务,先执行
php artisan config:clear清除配置缓存后再重试
内容的提问来源于stack exchange,提问作者None
相关产品推荐
相关产品推荐

