Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当限制设置为20时,Facebook Graph API不会响应任何数据_Java_Facebook Graph Api - Fatal编程技术网

Java 当限制设置为20时,Facebook Graph API不会响应任何数据

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的结果

我正在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的结果


我试图将限制提高到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}