使用Instagram Graph API与Python获取帖子点赞用户及报错求解
问题排查与解决说明
是否可以获取点赞用户列表
是,Instagram Graph API支持获取公开商业/创作者账号的帖子点赞用户列表,但存在权限和账号类型限制。
报错原因排查
你遇到的(#100) Tried accessing nonexisting field (reactions) on node type (ShadowIGMedia)报错由以下几个核心问题导致:
- 你调用的媒体ID对应的Instagram账号为普通个人账户,未升级为商业账号/创作者账号,也未绑定Facebook公共主页,这类账号的媒体对象在Graph API中属于
ShadowIGMedia节点,不支持查询likes字段 - 你当前使用的应用未申请
instagram_basic权限,或授权的access token没有对应账号的操作权限 - 你的代码存在变量未定义的问题:
getMediaLikes函数未接收object_id参数,拼接url时直接调用的object_id属于未定义变量,可能传入了错误的媒体对象ID
修正方案
前置准备
- 将目标Instagram账号升级为商业账号/创作者账号,绑定对应Facebook公共主页
- 在Meta开发者后台为你的应用申请
instagram_basic权限,完成应用审核(如果是公开应用) - 获取绑定主页后对应账号的有效access token,以及正确的帖子媒体ID
修正后代码示例
def getMediaLikes(params, object_id): """ 获取指定Instagram帖子的点赞用户列表 API Endpoint: https://graph.facebook.com/{version}/{object-id}?fields=likes.summary(true)&access_token={access-token} Returns: object: 接口返回的点赞数据 """ endpointParams = dict() endpointParams['fields'] = 'likes.summary(true)' endpointParams['access_token'] = params['access_token'] # 注意需要拼接API版本,建议使用v18及以上稳定版本 url = f"{params['graph_domain']}{params['api_version']}/{object_id}" return makeApiCall(url, endpointParams, params['debug'])
额外注意事项
- 单篇帖子最多只能拉取最近1000条点赞数据,无法全量获取所有历史点赞用户
- 私有账号的帖子点赞数据无法通过Graph API获取
- 该接口有调用频次限制,短时间内大量调用会被限流
内容的提问来源于stack exchange,提问作者Sreepa
相关产品推荐
相关产品推荐

