Java 当限制设置为20时,Facebook Graph API不会响应任何数据
我正在Facebook Graph API explorer中查询数据:Java 当限制设置为20时,Facebook Graph API不会响应任何数据,java,facebook-graph-api,Java,Facebook Graph Api,我正在Facebook Graph API explorer中查询数据: access_token="SECRET" GET https://graph.facebook.com/me/home?limit=20&until=1334555920&fields=id 结果: { "data": [ ] } 我很震惊,因为我的“家”上有很多订阅源 然后我尝试将限制设置为100,然后我得到了一个提要列表 这是怎么回事?“limit”参数是否会影响graph api的结果
access_token="SECRET"
GET https://graph.facebook.com/me/home?limit=20&until=1334555920&fields=id
结果:
{
"data": [
]
}
我很震惊,因为我的“家”上有很多订阅源
然后我尝试将限制设置为100,然后我得到了一个提要列表
这是怎么回事?“limit”参数是否会影响graph api的结果
我试图将限制提高到25,再次询问,有一个提要
那么“限制”和“直到”之间的关系是什么呢?Facebook的API有时会有点奇怪,因为你试图访问的数据,这个问题有几个部分 限制 这些限制是在返回数据时应用的,但在生成权限和访问控制之前应用的,这在去年的这篇博文中进行了解释: 权限 更重要的是,即使你给自己一个拥有所有FB权限的令牌,你仍然无法访问你创建的所有东西。假设你在朋友的订阅源上发布了一些东西,但是他们的订阅源没有设置为公共隐私。使用您的令牌对该朋友的feed进行的任何查询都不会返回数据(至少一年前是这样) API本身 去年我在使用Graph API时发现的最可怕的错误之一是它处理分页的方式。Graph API允许三个过滤器:限制、偏移和自/直到。Facebook建议(并且正确地建议)在任何可能的情况下,只使用自/截止日期进行分页。忽略关于为什么要这样做的争论,而不是在理论基础上进行补偿,在实践基础上,以下查询会随着时间的推移而降级:
// This obviously isn't valid as written, but you the params change as described
limit=fixed-value&offset=programmatic-increase&since=some-fixed-date-here
原因是:日期范围和偏移量彼此之间表现不好。例如,假设我进行了以下初始查询:
// My example query
limit=20&since=1334555920
--> {#1,#2, ... #20}
当然,您会希望页面显示更多数据。结果是这样的(我记不起确切的模式,但顶部的n
将是重复的,结果列表将被n/2
或类似的内容截断):
我从来没有弄明白为什么会发生这种情况,但最终查询将逐渐减少,不返回任何内容,并且只能得到大约50-100个唯一值。但是,如果你只使用日期进行分页,你可以继续使用数据允许的时间
这是一个警告,这是一个错误,这是从一段时间前。这里的主要教训是,如果不修改我的查询,使结果完全相同(基于帖子的特定日期范围为10-30,而限制为20,偏移量为10),我就永远不会发现这个bug,但结果完全不同
// My example query
limit=20&since=1334555920&offset=20
---> {#10, #11 ... #25}