Instagram Graph API Business Discovery无法返回Reels的media_url求助
Reels media_url无法获取的解决办法
问题原因
- Reels的
media_url并非Business Discovery接口默认返回字段,批量查询时若未明确指定,大概率不会返回。 - 早期Reels返回
media_url属于历史兼容情况,后续API调整了Reels字段的返回规则,需主动声明获取。
解决步骤
1. 明确指定请求字段
确保fields参数中包含media_url,修改字段配置示例:
fields = "media{id,like_count,comments_count,timestamp,username,media_product_type,media_type,media_url}"
将该字段加入查询后,接口会尝试返回Reels的media_url(需权限允许)。
2. 单独请求单条Reel详情
若批量查询仍无法拿到media_url,针对每个Reel的ID单独调用媒体详情接口:
def get_reel_media_url(version, reel_id, access_token): url = f"https://graph.facebook.com/{version}/{reel_id}?fields=media_url&access_token={access_token}" return requests.get(url).json().get("media_url") # 遍历媒体数据补全Reels的media_url for media_item in result["business_discovery"]["media"]["data"]: if media_item["media_product_type"] == "REELS": media_item["media_url"] = get_reel_media_url(version, media_item["id"], accessToken)
这种方式直接获取单条Reel的核心字段,绕过批量查询的字段限制。
3. 核对权限与API版本
- 确认应用已获得
instagram_basic、pages_read_engagement(关联FB页面时)权限; - 使用v18.0及以上的API版本,旧版本对Reels字段支持有限。
验证效果
调整后执行代码,Reels数据应包含media_url字段:
print(result["business_discovery"]["media"]["data"][0]) # 示例输出: # {'id': 'firstID', 'like_count': 6904, 'comments_count': 42, 'timestamp': '2023-06-14T09:09:25+0000', 'username': 'username', 'media_product_type': 'REELS', 'media_type': 'VIDEO', 'media_url': 'https://example.com/reel.mp4'}
内容的提问来源于stack exchange,提问作者Akira Yoshimura
相关产品推荐
相关产品推荐

