如何使用PHP通过LinkedIn API对已有帖子发表评论?
解决LinkedIn API发布评论的404错误
你的代码存在几个关键问题,导致出现"Resource comments does not exist"的404错误,以下是修正方案:
1. 修正API请求端点
LinkedIn v2 API发布评论时,必须在URL中指定评论发布者的actor参数(即当前用户的Person URN),正确的端点格式为:
https://api.linkedin.com/v2/comments?actor=urn:li:person:<YOUR_PERSON_URN>
你需要将<YOUR_PERSON_URN>替换为当前授权用户的Person URN,可通过调用https://api.linkedin.com/v2/me接口获取。
2. 修正Content-Type请求头
发送JSON格式的请求体时,Content-Type必须设置为application/json,而非text/plain,否则API无法正确解析请求数据。
3. 确保权限正确
你的OAuth访问令牌必须包含w_member_social权限,这是发布评论的必要权限,需在OAuth授权流程中明确请求该权限。
修正后的PHP代码示例
$curl = curl_init(); // 替换为你的Person URN和帖子ID $personUrn = "urn:li:person:你的用户URN"; $postId = "123113456965144456"; curl_setopt_array($curl, array( CURLOPT_URL => "https://api.linkedin.com/v2/comments?actor={$personUrn}", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => json_encode(array( "objectUrn" => "urn:li:activity:{$postId}", "message" => array( "text" => "This is great." ) )), CURLOPT_HTTPHEADER => array( 'Authorization: Bearer ' . $token, 'Content-Type: application/json' ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
额外验证点
- 确认帖子的
objectUrn格式正确:从链接https://www.linkedin.com/posts/activity-123113456965144456-_3RW中提取的ID是123113456965144456,对应的URNurn:li:activity:123113456965144456是正确的。 - 确保访问令牌未过期,且属于有权限操作该帖子的用户(比如帖子公开可见,或你是帖子发布者的连接)。
内容的提问来源于stack exchange,提问作者The Mac
相关产品推荐
相关产品推荐

