如何获取足够Scope通过LinkedIn API发布到群组并解决报错
解决方案:LinkedIn API 群组发帖问题
核心问题梳理
- 需求:通过LinkedIn API向群组发布内容,已获取Client ID、Client Secret及
w_member_social权限令牌 - 困惑:不确定使用旧版
/ugcPosts还是新版/posts接口,且遇到格式、权限类报错
错误原因及修正步骤
1. 接口选择:弃用旧版UGC接口
LinkedIn已逐步淘汰/ugcPosts接口,推荐使用新版/posts接口,该接口兼容w_member_social权限,完全贴合当前API规范。
2. 格式错误修正(author URN不匹配)
报错"urn:li:person:[id]" does not match urn:li:company:\d+|urn:li:member:\d+的原因是:
- 成员的URN格式必须为
urn:li:member:[你的成员ID],而非urn:li:person:... - 获取成员ID:调用
GET https://api.linkedin.com/v2/me接口,返回的id字段即为成员ID,拼接成对应URN即可。
3. 权限与参数修正
- 权限验证:确保令牌包含
w_member_social权限,可通过GET https://api.linkedin.com/v2/me?projection=(authorization)检查权限列表 - 发帖到群组必须指定
visibility.container为群组URN(格式urn:li:group:[群组ID],群组ID从群组URL中提取) - 移除多余字段:当
shareMediaCategory设为NONE时,无需添加media数组,否则会触发「未被允许的字段」报错
修正后的代码示例
import requests # 替换为你的实际值 ACCESS_TOKEN = 'your-access-token' GROUP_URN = 'urn:li:group:[group-id]' # 群组URN示例:urn:li:group:123456 MEMBER_URN = 'urn:li:member:[your-member-id]' # 成员URN示例:urn:li:member:987654 url = 'https://api.linkedin.com/v2/posts' headers = { 'Authorization': f'Bearer {ACCESS_TOKEN}', 'Content-Type': 'application/json', 'X-Restli-Protocol-Version': '2.0.0' } payload = { "author": MEMBER_URN, "lifecycleState": "PUBLISHED", "specificContent": { "com.linkedin.ugc.ShareContent": { "shareCommentary": { "text": "Some group text" }, "shareMediaCategory": "NONE" } }, "visibility": { "com.linkedin.ugc.MemberNetworkVisibility": "CONTAINER", "container": GROUP_URN } } response = requests.post(url, json=payload, headers=headers) print(response.status_code) print(response.json())
额外注意事项
- 确保你是目标群组的成员,且群组允许普通成员发帖(部分群组仅管理员可发布内容)
- 若仍报「访问被拒绝」,需检查令牌的权限范围是否正确,或重新申请包含
w_member_social的授权令牌
内容的提问来源于stack exchange,提问作者RQAB
相关产品推荐
相关产品推荐

