我一直在使用 Facebook4j 来满足 Facebook 图形 API 相关的要求,我的要求非常简单。
要求:我需要经常搜索给定关键字的 Facebook 对象(所有公共对象-帖子/评论/页面/等..)并将所有结果保存到数据库中。
问题:虽然要求看起来很简单,但我一直在处理结果的分页并稍后调用 API,而不会在连续调用 API 时丢失任何项目(帖子/页面/评论)。
做一些研究,我发现图形 API 提供了几种分页方法,并且基于光标是最好的和推荐的。但不幸的是,基于光标的搜索不适用于所有类型的对象。所以我不得不选择使用 until 和 since 参数的基于时间的分页。
Q1.我的决定是正确的吗?
以下是我使用 Facebook4j 进行搜索 API 调用时获得的上一个和下一个 URL 示例
previous = https://graph.facebook.com/v1.0/search?limit=200q=infographic&access_token=
[ACCESS_TOKEN]&since=1400152500&__previous=1,
next = https://graph.facebook.com/v1.0/search?limit=200&q=infographic&access_token=
[ACCESS_TOKEN]&until=1399983583
假设我做了一个 API 调用并使用 Facebook4j API 方法,那么我应该能够使用 fetch next 方法并继续。
facebook.fetchNext()
但是,当我在我的应用程序中遇到异常或此时没有进一步的结果时,我认为我应该能够坚持自/直到值并将它们用于将来的 API 调用,并继续从我的位置获取搜索结果上次停了。
Q2。关于分页的假设是否正确?
所以我假设我未来的 API 调用将类似于以下内容。我不确定是使用“since”还是“until”。
Q3.我调用下面的API从以前的搜索中继续搜索的方式可以吗?
ResponseList<JSONObject> results = facebook.search("KEYWORD",new Reading().limit(200).until("1399983583"));
此外,我不确定这些结果是否以这样的方式进行分页,当我使用提供的“NEXT url”/fetchnext() 时,我得到了最新的结果集?
Q4.现在请澄清我提供的 NEXT url 在分页和未来 API 调用方面完全有效吗?
如果我的上述方法是错误的,请建议我应该遵循的最佳实践来处理这个要求。