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

PHP用Curl请求LinkedIn API V2返回空OAuth2令牌错误如何解决

问题排查&修复方案

已确认的异常点

  • 请求URL参数未闭合:你当前使用的请求地址最后缺少1个右括号,完整正确的地址应为https://api.linkedin.com/v2/me?projection=(id,firstName,lastName,profilePicture(displayImage~:playableStreams)),缺失右括号会导致LinkedIn后端解析参数时抛出字符串索引越界异常,对应你收到的java.lang.StringIndexOutOfBoundsException错误。
  • 多余的请求头配置:GET请求无请求体,不需要设置content-type: application/json,部分API服务端会对多余的请求头做校验拦截,可能导致请求异常。
  • 授权令牌识别异常:
    1. 先确认$accessBearerToken变量实际有有效值,不存在拼写错误、作用域未传递的问题,你可以临时打印该变量值做校验
    2. 建议拼接授权头时先对令牌做去首尾空白处理,防止令牌前后存在空格、换行符导致服务端识别为空令牌,对应你收到的Empty OAuth2 access token错误

修复后代码

$curl = curl_init(); //CURL version: 7.29, PHP version: 7.4.26
// 调试用:确认令牌有效值,调试完成可删除
// var_dump($accessBearerToken);exit;

curl_setopt_array($curl, array(
    // 补全URL的闭合括号
    CURLOPT_URL => 'https://api.linkedin.com/v2/me?projection=(id,firstName,lastName,profilePicture(displayImage~:playableStreams))',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_TIMEOUT => 300,
    CURLOPT_CUSTOMREQUEST => "GET",
    // 移除多余的content-type头,授权头拼接trim后的令牌
    CURLOPT_HTTPHEADER => array(
        "Accept: application/json",
        "Authorization: Bearer ".trim($accessBearerToken)
    ),
));

$response = curl_exec($curl);
// 调试用:打印请求错误信息和请求详情,调试完成可删除
// if(curl_errno($curl)){
//     var_dump(curl_error($curl));
// }
// var_dump(curl_getinfo($curl));
curl_close($curl);

内容的提问来源于stack exchange,提问作者Emil Garder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:45:03