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

LinkedIn OAuth授权始终返回invalid_client错误求助

排查LinkedIn OAuth2获取AccessToken时的401 invalid_client错误

针对你遇到的问题,结合LinkedIn OAuth2的特性,给你几个针对性的排查和解决方向:

1. 改用HTTP Basic认证方式提交客户端凭证

LinkedIn的AccessToken接口支持两种客户端认证方式,表单提交client_id/client_secret有时会因为密钥中的特殊字符(比如你的密钥里的.、_)编码解析问题导致失败,改用HTTP Basic Auth更可靠:

修改你的PHP代码如下:

$url = 'https://www.linkedin.com/oauth/v2/accessToken';  
// 只保留非凭证类参数
$curlPostarray = array(
    'grant_type' => 'authorization_code',
    'code' => $code,
    'redirect_uri' => $redirect_uri
);
$ch = curl_init();    
curl_setopt($ch, CURLOPT_URL, $url);    
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); // 建议开启SSL验证,更安全
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($curlPostarray));
// 添加Basic Auth头
$authHeader = base64_encode("$client_id:$client_secret");
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/x-www-form-urlencoded',
    "Authorization: Basic $authHeader"
));
$data = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

2. 严格校验redirect_uri的完全匹配

LinkedIn对redirect_uri的校验极其严格,必须和你在LinkedIn开发者后台配置的完全一致:

  • 检查协议:必须是https(LinkedIn现在要求生产环境必须用HTTPS)
  • 检查路径:大小写、末尾是否有斜杠、参数(如果有的话)都要完全匹配
  • 示例:后台配置的是https://www.example.com/slpw/plugin_sociallogin/linkedinredirect.php,实际请求里不能写成https://www.example.com/slpw/plugin_sociallogin/或者其他变体

3. 确认授权码的有效性

  • LinkedIn的授权码只能使用一次,重复使用会直接返回认证失败
  • 授权码有效期很短(通常5分钟),确保你用的是刚获取的新鲜授权码,不要用过期的

4. 检查应用的状态和权限

  • 确认你的LinkedIn应用已经通过审核(即使是开发测试阶段,也要确保应用状态是可访问的)
  • 检查应用是否开启了OAuth2相关的权限,确认client_id和client_secret确实属于该应用

用Rested工具测试时,也可以切换到Basic Auth模式,输入你的client_id和client_secret,然后POST参数只传grant_type、code、redirect_uri,看是否能成功获取token。

内容的提问来源于stack exchange,提问作者Adrian Jones

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 06:57:28