使用Graph API获取Instagram媒体列表遇100错误的求助
问题:调用Graph API拉取Instagram媒体列表返回字段不存在错误
问题背景
之前用以下Graph API请求拉取Instagram媒体列表:
https://graph.facebook.com/{app_id}/media?fields=media_url,{..some fields here...}&limit=10000&access_token={my_access_token}
该请求曾正常运行,近期没改代码,突然返回错误:
{ "error": { "message": "(#100) Tried accessing nonexisting field (media) on node type (Application)", "type": "OAuthException", "code": 100, "fbtrace_id": "Aty4vnPpLWfGq9Hj6hQFtZR" } }
已知信息:
- Graph API v14、v15版本均报错
- 访问令牌有效,其他API请求能正常执行
- 官方文档未提及
media字段停用
问题原因
你请求的端点路径完全错误:/{app_id}/media是针对应用节点发起的请求,但应用节点本身根本没有media字段,所以返回“字段不存在”的错误。
之前请求能正常运行大概率是旧版API的兼容漏洞或者配置巧合,但从Graph API的规范来说,应用节点从来就不提供media字段用来拉取Instagram内容,正确的请求应该针对用户节点或者Instagram商业账号节点。
替代方案
根据你的使用场景,选对应的正确端点:
场景1:拉取个人Instagram账号的媒体内容
先拿到用户的Instagram用户ID,然后请求该用户节点的media字段:
https://graph.facebook.com/{instagram_user_id}/media?fields=media_url,caption,timestamp&limit=100&access_token={my_access_token}
注意:个人账号需要用户授权instagram_basic权限,且只能拉取授权用户自己的媒体内容。
场景2:拉取Instagram商业账号的媒体内容
- 先获取商业账号关联的Facebook页面ID,通过页面ID拿到对应的Instagram商业账号ID:
https://graph.facebook.com/{facebook_page_id}?fields=instagram_business_account&access_token={my_access_token}
- 用返回的
instagram_business_account.id作为节点ID,请求媒体列表:
https://graph.facebook.com/{instagram_business_account_id}/media?fields=media_url,caption,timestamp,media_type&limit=100&access_token={my_access_token}
注意:商业账号需要应用获得pages_show_list、instagram_basic等权限,且访问令牌要关联对应的页面权限。
内容的提问来源于stack exchange,提问作者zawar
相关产品推荐
相关产品推荐

