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

PHP调用LinkedIn API获取分享统计时timeIntervals参数报错

问题

我需要从LinkedIn主页获取分享统计指标,参考官方文档实现。在Postman中测试请求正常,但用PHP代码实现时出现400错误,提示timeIntervals参数格式或类型无效。

我的PHP代码如下:

$date_start = strtotime(date('Y-01-01 00:01:01'));
$date_end = strtotime(date('Y-m-d H:i:s'));
$response = Http::withHeaders([
            'Authorization' => 'Bearer ' . $accessToken,
            'Linkedin-Version' => '202406',
            'X-Restli-Protocol-Version' => '2.0.0',
        ])->get('https://api.linkedin.com/rest/organizationalEntityShareStatistics', [
            'q' => 'organizationalEntity',
            'organizationalEntity' => 'urn:li:organization:XXXXXXXX',
            'timeIntervals' => '(timeGranularityType:DAY,timeRange:(start:'.$date_start.',end:'.$date_end.'))',
        ]);
return $response->json();

即使把$date_start和$date_end硬编码为1704067200000、1717113600000,仍会出现相同错误;但移除timeIntervals参数后请求可正常执行。请问代码存在什么问题?

解决方法

问题出在timeIntervals参数的传递格式和时间戳单位上:

  • Laravel的Http::get()会自动处理数组参数为URL查询字符串,手动拼接Restli风格的结构化字符串会被URL编码,导致API无法识别。
  • LinkedIn Rest API要求timeIntervals是数组格式的结构化参数,而非直接拼接的字符串;同时时间戳必须是毫秒级,原代码中strtotime返回的是秒级,不符合要求。

修正后的代码:

// 转换为毫秒级时间戳
$date_start = strtotime(date('Y-01-01 00:01:01')) * 1000;
$date_end = strtotime(date('Y-m-d H:i:s')) * 1000;

$response = Http::withHeaders([
    'Authorization' => 'Bearer ' . $accessToken,
    'Linkedin-Version' => '202406',
    'X-Restli-Protocol-Version' => '2.0.0',
])->get('https://api.linkedin.com/rest/organizationalEntityShareStatistics', [
    'q' => 'organizationalEntity',
    'organizationalEntity' => 'urn:li:organization:XXXXXXXX',
    // 用嵌套数组传递结构化参数,Laravel会自动转换为API要求的格式
    'timeIntervals' => [
        [
            'timeGranularityType' => 'DAY',
            'timeRange' => [
                'start' => $date_start,
                'end' => $date_end
            ]
        ]
    ]
]);

return $response->json();

关键要点:

  1. 时间戳转换:将strtotime返回的秒级时间戳乘以1000,转为API要求的毫秒级。
  2. 参数结构:用嵌套数组定义timeIntervals,Laravel HTTP客户端会自动将其序列化为LinkedIn Restli协议所需的字符串格式,无需手动拼接。

内容的提问来源于stack exchange,提问作者Ontagen Onta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 20:12:36