如何通过Facebook Graph API获取Insights指标?代码返回空数据求助
解决Facebook Graph API Insights返回空数据的问题
我之前也碰到过类似的情况,返回空的data数组通常是由几个常见问题导致的,咱们一步步来排查和解决:
1. 检查Access Token的权限是否足够
Facebook Insights的指标需要特定权限才能访问,比如pages_read_engagement和pages_show_list是核心必备权限。你可以通过Facebook的Access Token Debugger(在开发者工具中直接搜索即可)验证你的token是否包含这些权限。如果权限不足,需要重新生成一个由页面管理员账号授权的access token,确保请求时携带了正确的权限范围。
2. 升级API版本到最新稳定版
你当前使用的v2.12版本已经非常老旧,Facebook早已停止对旧版本API的支持,很多旧指标或数据接口可能已被移除或限制访问。建议把API版本升级到最新的稳定版(比如v18.0),修改base变量:
base = "https://graph.facebook.com/v18.0"
3. 修正URL参数的格式错误
你构造URL时用了&,这是HTML转义后的符号,直接放在URL里会导致参数解析错误,Facebook无法正确识别period、since等后续参数。需要把所有&替换成普通的&:
parameters = "/insights/?metric=page_consumptions&period=day&since=2018-03-30&until=2018-04-30&access_token=%s"
4. 验证日期范围是否有数据
先确认2018-03-30到2018-04-30这段时间内,你的Facebook页面是否真的有page_consumptions相关的数据。如果那段时间页面没有发布内容或者没有用户互动,自然会返回空数据。可以先测试最近几天的日期范围,比如:
parameters = "/insights/?metric=page_consumptions&period=day&since=2024-05-01&until=2024-05-10&access_token=%s"
修正后的完整代码示例
import requests import pandas as pd page_id = 'your_page_id' access_token = 'your_valid_access_token' base = "https://graph.facebook.com/v18.0" node = "/" + page_id parameters = "/insights/?metric=page_consumptions&period=day&since=2024-05-01&until=2024-05-10&access_token=%s" url = base + node + parameters % access_token # 别忘了格式化填充access_token! metrics = requests.get(url).json() print(metrics)
另外,你原来的代码里没有对parameters中的%s进行格式化替换,这也是一个潜在的问题,修正后的代码里补上了这一步。
内容的提问来源于stack exchange,提问作者Edward
相关产品推荐
相关产品推荐

