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

使用LinkedIn API v2分享内容遇504请求超时问题求助

如何修复LinkedIn API v2分享内容的超时及请求错误

我帮你排查了代码里的几个关键问题,这些问题直接导致了请求超时和失败:

核心问题分析与修复步骤

1. Access Token的传递方式完全错误

你现在把access token直接拼在URL末尾,这会让请求的地址变成https://api.linkedin.com/v2/ugcPosts{token},这根本不是LinkedIn的合法API端点,自然会触发超时或无效请求。正确的做法是把token放在Authorization请求头里,格式为Bearer {你的access token}。

2. 缺少JSON请求头与API协议版本头

你发送的是JSON格式的请求体,但没有设置Content-Type: application/json,LinkedIn API无法解析你的请求内容;同时还需要添加X-Restli-Protocol-Version: 2.0.0,这是LinkedIn v2 API强制要求的协议版本头。

3. curl_getinfo调用时机错误

你在curl_exec之前就调用了curl_getinfo,这时候请求还没执行,所以HTTP状态码永远是0,必须把这行代码移到curl_exec之后。

4. URN格式验证

urn:li:person:后面的ID应该是LinkedIn返回的纯字母数字字符串(比如aBcDeF123),如果你的ID包含连字符,大概率是错误的。你可以调用https://api.linkedin.com/v2/me接口获取正确的个人ID,然后拼接成合法的URN。

修复后的完整share方法代码

public function share() {
    $url = "https://api.linkedin.com/v2/ugcPosts";
    $fields = '{ 
        "author": "urn:li:person:' . $this->_urn_id . '", 
        "lifecycleState": "PUBLISHED", 
        "specificContent": { 
            "com.linkedin.ugc.ShareContent": { 
                "shareCommentary": { 
                    "text": "Hello World! This is my first Share on LinkedIn!" 
                }, 
                "shareMediaCategory": "NONE" 
            } 
        }, 
        "visibility": { 
            "com.linkedin.ugc.MemberNetworkVisibility": "PUBLIC" 
        } 
    }';
    
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
    curl_setopt($curl, CURLOPT_POSTFIELDS, $fields);
    // 添加必要的请求头
    curl_setopt($curl, CURLOPT_HTTPHEADER, [
        'Authorization: Bearer ' . $this->_access_token,
        'Content-Type: application/json',
        'X-Restli-Protocol-Version: 2.0.0'
    ]);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 生产环境建议开启SSL验证
    
    $response = curl_exec($curl);
    // 移到curl_exec之后获取HTTP状态码
    $httpCode = curl_getinfo($curl , CURLINFO_HTTP_CODE);
    
    if ($response === false) {
        $response = curl_error($curl);
    }
    
    echo "HTTP状态码: " . $httpCode . "<br>";
    echo stripslashes($response);
    
    curl_close($curl);
}

额外排查建议

  • 权限检查:确保你的应用已经申请了w_member_social权限,这是发布UGC内容必须的权限,没有这个权限会返回权限错误(即使你拿到了token)。
  • 网络排查:如果还是超时,检查你的服务器是否能正常访问LinkedIn的API域名(比如用curl直接测试curl -v https://api.linkedin.com/v2/me),可能是防火墙、代理或网络运营商的问题。
  • 开启调试:可以添加curl_setopt($curl, CURLOPT_VERBOSE, true);来输出详细的curl请求日志,帮助定位具体的请求问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:26:39