能否通过Projection在LinkedIn Post API中获取媒体(图片/视频)URL?
解决LinkedIn API获取帖子媒体URL的问题
问题原因
你用id~(id,title,downloadUrl)尝试展开li:image类型的URN时返回501错误,是因为LinkedIn的Share API不支持直接展开图片/视频的URN,这种展开方式仅适用于组织、用户等特定类型的URN。
可行解决方案
方案1:调整Projection字段直接获取媒体URL
对于图片类帖子,LinkedIn在content.multiImage字段中会直接返回图片URL,无需展开URN。修改你的请求参数:
$params = [ 'author' => 'urn:li:organization:xxxxx', 'q' => 'author', 'count' => 15, 'projection' => '(elements(id,commentary,content(media(title),multiImage(images*(image~:playableStreams)),article),publishedAt,author),paging)', ];
返回结果里,multiImage.images数组的image~.playableStreams字段会包含可直接访问的图片URL。
方案2:单独调用Media API获取URL
如果必须通过URN获取媒体信息,拿到urn:li:image:xxxxxxxxxxxx后,单独调用LinkedIn Media API:
- 请求端点:
https://api.linkedin.com/v2/media/{media_id} - 将
{media_id}替换为URN中的ID部分(即xxxxxxxxxxxx) - 请求需携带有效的OAuth2授权头
此方式需要额外API调用,效率低于方案1。
方案3:适配视频类帖子
如果是视频帖子,调整projection中的media字段配置:
media(id,title,description,originalUrl,mediaContentType)
视频的originalUrl字段会直接返回播放地址,无需展开URN。
注意事项
- 确保API应用已申请
w_member_social或r_organization_social权限,无对应权限无法获取完整媒体信息。 - 单图、多图、视频、文章等不同类型帖子的
content字段结构不同,需根据返回结果做分支处理。
内容的提问来源于stack exchange,提问作者Epra
相关产品推荐
相关产品推荐

