无法通过LinkedIn按作者查询Post API获取媒体URL的技术咨询
如何通过LinkedIn Posts API批量获取组织帖子的媒体URL(无需逐个查询)
问题背景
我通过LinkedIn Posts API按组织作者查询帖子时,尝试用响应装饰直接获取媒体URL,但遇到了几个问题:
- 使用
id~digitalmediaAsset:playableStreams在projection中嵌套装饰时,响应里没有预期的id~字段 - 直接用
~装饰媒体URN会返回Unsupported URN domain: li:video错误 - 尝试
~digitalmediaAsset:privatePlayableStreams也无效果,请求返回200但拿不到媒体URL
问题原因
LinkedIn Posts API的projection嵌套装饰不支持跨URN域的直接装饰,帖子中的媒体URN(如li:video、li:digitalmediaAsset)需要通过单独的decorate参数来配置装饰规则,而不是在projection里嵌套。
解决方案
不要在projection中嵌套装饰逻辑,改用decorate查询参数单独指定需要装饰的URN类型和对应的字段,同时保持projection只定义返回的结构。
修改后的代码示例
const url = new URL("https://api.linkedin.com/rest/posts"); // 基础查询参数 url.searchParams.append("q", "author"); url.searchParams.append("author", "urn:li:organization:2414183"); // DevTestCo url.searchParams.append("isDsc", false); url.searchParams.append("start", 0); url.searchParams.append("count", 10); // 简化projection,仅定义返回的字段结构 url.searchParams.append( "projection", `( paging, elements(*( id, commentary, content(media(*(id))) )) )` ); // 通过decorate参数指定需要装饰的URN类型及字段 url.searchParams.append( "decorate", `( urn:li:digitalmediaAsset:(playableStreams), urn:li:video:(playableStreams) )` ); const r = await axios.get(url.href, { headers: { Authorization: `Bearer ${ACCESS_TOKEN}`, "Linkedin-Version": "202209", }, }); console.log("posts response", r.data);
说明
- 配置
decorate参数后,响应中对应的媒体URN会自动带上id~字段,其中包含playableStreams(包含媒体的URL信息) - 确保你的Access Token拥有足够的权限,比如
r_organization_social或rw_organization_admin,否则可能无法获取媒体详情 - 如果需要私有流地址,可以把
playableStreams替换为privatePlayableStreams
内容的提问来源于stack exchange,提问作者Louis Coulet
相关产品推荐
相关产品推荐

