如何通过Facebook Graph API获取Instagram短码对应媒体ID及相关指标
Instagram短码提取媒体ID的实现方案
1. 你提到的oEmbed接口方案
旧版的api.instagram.com/oembed接口已经废弃,目前需要调用Facebook Graph API的官方oEmbed端点,需要提前准备好已过审的Facebook开发者应用、对应的访问令牌:
- 调用格式参考:
GET /v18.0/instagram_oembed?url=https://www.instagram.com/p/CP2rpLyCwPn/&access_token=你的应用访问令牌 - 返回响应中直接包含
media_id字段,拿到该ID后即可调用GET /{media_id}接口拉取你需要的caption、media_product_type、comments_count等全量字段。
注意:该接口支持公开帖子、Reels、IGTV等所有公开Instagram媒体类型的ID查询,私有内容调用会返回错误。
2. 本地短码转ID方案(无需接口调用)
Instagram的公开短码本质是媒体ID的Base64编码结果,你可以直接在本地通过编码转换得到媒体ID,不需要发起网络请求:
- 自定义字符映射表为:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_ - 转换逻辑:将短码每个字符对应到映射表的索引值,逐字符左移6位累加,最终得到的十进制值就是媒体ID
- 代码示例(Python):
def shortcode_to_id(shortcode): chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_' id = 0 for c in shortcode: id = (id << 6) + chars.index(c) return id # 测试你给出的短码 print(shortcode_to_id('CP2rpLyCwPn'))
该方法仅对公开媒体有效,私有账号的媒体用转换后的ID调用Graph API会返回权限错误。
3. Graph API直接查询方案
如果你已经对接了Instagram Business Discovery API,可以直接通过短码过滤查询对应媒体的ID和全量字段,不需要提前做ID转换:
- 调用格式参考:
GET /v18.0/{你的Instagram商业账号ID}?fields=business_discovery.username({发布帖子的账号用户名}){media{shortcode,id,caption,comments_count}}&access_token=你的访问令牌 - 从返回的媒体列表中筛选shortcode为目标值的条目,即可直接获取对应的ID和所有你需要的字段。
内容的提问来源于stack exchange,提问作者monica reddy
相关产品推荐
相关产品推荐

