You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8使用Passport测试OAuth出现invalid_client错误如何解决?

Laravel 8 Passport invalid_client 错误原因及解决方案

错误返回如下:

{
  "error": "invalid_client",
  "error_description": "Client authentication failed",
  "message": "Client authentication failed"
}

错误产生原因

  • 客户端凭证不匹配:请求OAuth接口时传入的client_id、client_secret和数据库oauth_clients表中存储的对应值不一致,是该错误最常见的触发原因。
  • 客户端类型不匹配:如使用密码授权模式但创建的是客户端凭证类型的客户端,或勾选了「仅限私有客户端」但请求时未正确携带密钥。
  • 配置缓存未更新:Passport相关配置修改后未清理Laravel配置缓存,程序加载的仍是旧配置。
  • 密钥校验失败:Passport生成的公钥/私钥文件损坏、权限不足,或APP_KEY修改后未重新生成密钥对,导致客户端签名校验不通过。
  • 请求参数格式错误:参数未按要求放在x-www-form-urlencoded格式的请求体中,或参数名拼写错误(如将client_id误写为client-id)。

解决方案

  • 校验客户端凭证:核对请求时传入的client_id和client_secret,直接查询数据库oauth_clients表对应记录,确认值完全匹配,注意不要包含多余空格。
  • 匹配客户端类型:
    • 若使用密码授权模式,需执行命令php artisan passport:client --password生成对应类型的密码授权客户端
    • 公开客户端请求时不要传递client_secret参数,私有客户端必须传递正确的client_secret
  • 清理缓存:执行php artisan config:clear清理旧的配置缓存,必要时同时执行php artisan route:clear清理路由缓存。
  • 重新生成密钥:若密钥文件异常,执行php artisan passport:keys重新生成公钥私钥,确认storage/oauth-public.key和storage/oauth-private.key文件权限为600,所属用户和Web服务运行用户一致。
  • 校验请求格式:确认请求头Content-Type设置为application/x-www-form-urlencoded,所有OAuth必填参数(grant_type、client_id等)都放在请求体中传递,不要放在URL参数内。

内容的提问来源于stack exchange,提问作者dev tech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 17:09:05