如何获取LinkedIn V2 API个人ID?及API发帖授权问题排查
Hey there, let's break down your two questions step by step to get you up and running with the LinkedIn V2 API.
一、如何获取LinkedIn V2 API所需的个人ID
有两种可靠的方式可以拿到你的个人ID,优先推荐API方法保证准确性:
方法1:使用LinkedIn Me API(官方推荐)
这是最稳妥的方式,步骤如下:
- 先确保你的LinkedIn应用已经申请并获得了
r_liteprofile权限(这是获取基础个人资料的必要权限) - 用当前有效的访问令牌,发送GET请求到:
GET https://api.linkedin.com/v2/me - 返回的JSON响应里,
id字段的数值就是你的个人ID(一串数字)。示例响应如下:{ "id": "123456789", "firstName": { ... }, "lastName": { ... } } - 把这个ID拼入URN格式,就是你需要的
urn:li:person:123456789
方法2:从LinkedIn网页端获取(仅适用于未自定义URL的情况)
如果你的个人主页是默认URL格式(没有自定义后缀),比如:
https://www.linkedin.com/in/123456789/
那么URL最后一段的数字就是你的个人ID。但如果用了自定义用户名(比如https://www.linkedin.com/in/john-doe-abc123/),这个方法就失效了,必须用API方式获取真实ID。
二、解决发布内容时的权限错误
你遇到的Writers of type person are not authorized to modify UserGeneratedContent错误,确实可能和个人ID有关,但更大概率是权限配置或请求格式问题,咱们逐一排查:
验证Author URN的正确性
先确认代码里$author = array( 'author' => 'urn:li:person:XXXXXXXX', )中的XXXXXXXX是通过上面方法拿到的真实个人ID,而不是自定义URL后缀或其他错误值。检查应用权限是否齐全
发布内容到个人主页必须拥有w_member_social权限,你需要:- 登录LinkedIn开发者后台,找到你的应用
- 在「产品」选项卡中添加「Share on LinkedIn」产品,确保
w_member_social权限已被批准 - 确认你的访问令牌包含该权限,可以调用以下接口验证:
查看响应中是否包含GET https://api.linkedin.com/v2/me?projection=(id,authorizedActions)w_member_social相关的授权操作。
确认请求格式符合规范
发布内容的请求体必须严格遵循LinkedIn V2 API的格式要求,比如正确嵌套author字段,示例请求体如下:{ "author": "urn:li:person:123456789", "lifecycleState": "PUBLISHED", "specificContent": { "com.linkedin.ugc.ShareContent": { "shareCommentary": { "text": "Test post via LinkedIn API" }, "shareMediaCategory": "NONE" } }, "visibility": { "com.linkedin.ugc.MemberNetworkVisibility": "PUBLIC" } }
如果以上步骤都确认无误,重新发起请求应该就能解决这个权限错误了。
内容的提问来源于stack exchange,提问作者user11157722

