使用LinkedIn Member Data Portability API获取UGC帖子遇问题求助
解决LinkedIn Member Data Portability API获取个人最近UGC帖子的问题
问题根源分析
- 参数名称错误:你使用了单数
resourceName,但LinkedIn API要求用复数resourceNames(数组类型)指定过滤的资源类型,这导致过滤规则失效,返回了点赞、邀请等无关内容。 - 时间格式错误:
startTime需要传入ISO 8601格式的时间字符串(如2024-05-01T00:00:00Z),而非时间戳,这是数据返回不及时的核心原因。 - 循环调用触发限制:盲目循环请求会触发LinkedIn的API速率限制,需要通过分页参数合理控制请求次数。
修正后的代码实现
import json import requests from datetime import datetime, timedelta access_token = "_secret_" api_url = "https://api.linkedin.com/rest/memberChangeLogs?q=memberAndApplication" headers = { "LinkedIn-Version": "202312", "Authorization": f"Bearer {access_token}", "Content-Type": "application/json" } # 生成30天前的ISO 8601格式时间,用于过滤最近的内容 start_time = (datetime.utcnow() - timedelta(days=30)).isoformat() + "Z" payload = { "count": 10, # 适当调大count减少分页次数,后续从中筛选UGC帖子 "resourceNames": ["ugcPosts"], # 正确的复数参数名,数组类型 "sortBy": "LAST_MODIFIED", "startTime": start_time } response = requests.get(api_url, headers=headers, params=payload) response.raise_for_status() # 捕获API请求错误 data = response.json() # 提取纯UGC帖子数据,确保只保留目标内容 ugc_posts = [item for item in data.get("elements", []) if item.get("resourceType") == "ugcPosts"] # 取最近5条 recent_5_posts = ugc_posts[:5] print(json.dumps(recent_5_posts, indent=2))
额外优化建议
- 分页处理:如果一次请求返回的UGC帖子不足5条,可使用响应中
paging字段的start参数进行分页(例如payload["start"] = 10),但需注意:- 每次分页请求间隔至少1秒,避免触发速率限制
- 最多请求3-5次,防止过度调用
- 时间范围调整:根据你的发帖频率调整
timedelta(days=30)的天数,确保覆盖足够的时间范围但不会返回过多旧数据 - 错误处理:添加更多异常捕获逻辑(如网络错误、权限错误),提升脚本稳定性
内容的提问来源于stack exchange,提问作者Under The Ground Portugal
相关产品推荐
相关产品推荐

