You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 12:01:20