gpt4 book ai didi

facebook-graph-api - 查询 Facebook Graph API 时如何找出我在最后一页?

转载 作者:行者123 更新时间:2023-12-05 04:12:03 25 4
gpt4 key购买 nike

作为练习,我正在编写简单(并且尽可能无状态)客户端应用程序(在 React 中),以在单个 Facebook 实体的提要中显示帖子。该应用程序从 Facebook Graph API 获取数据。

我使用 Facebook JS SDK 查询以下 URL:/<entity-id>/feed?limit=20&fields=...

我有简单的分页按钮(“上一个”和“下一个”),它们查询在 response.paging.previous 中的 API 响应中收到的分页 URL和 response.paging.next分别。

问题是我不知道如何确定我是否在最后一页以正确禁用“下一步”按钮。

我尝试了一些方法,但仍然没有得到我想要的。

选项 1:允许单击“下一步”,直到没有更多响应数据

  • 按钮在 response.data.length == 0 时被禁用.

  • paging对象包含 next URL 即使没有更多的数据要接收,所以在没有数据的页面之前我无法检查它。

  • 问题是当我到达该页面时,也没有 paging包含在 response 中的对象.因此,我无法使用“上一页”按钮返回到包含数据的最后一页。

选项 2:允许单击“下一步”,直到我收到的数据少于查询限制

  • 按钮在 response.data.length < limit 时被禁用.

  • 适用于 data.length % limit != 0 的集合.

  • 问题出现在相反的情况下,例如,当集合中有 40 个对象时,我在限制为 20 的第二页上,我仍然可以单击“下一步”,但我最终会进入页面没有更多的对象,如选项 1 中所述。

选项 3:记住上次请求的 URL

  • 最后一个请求 URL 存储在变量中,即使没有 paging,“上一个”按钮也可以使用response 中的数据.

  • 只解决“你不能回去”的问题。

  • 正确禁用“下一步”按钮并不能解决问题。还是有可能在最后一个有数据的页面点击“下一步”,进入没有数据的空白页面。

那么问题是:

我如何才能知道我已经收到了收藏中的最后一件元素,然后单击“下一步”我将进入无效的空白页面?

  • Graph API 提供 response.paging 对我来说似乎很奇怪甚至在集合的开头/结尾的 URL。

  • 例如,如果我有 10 个帖子的提要,并且我使用 limit 20 进行查询, 我收到 responsedata: Array[10]pagingpaging.previous 中都具有有效 URL 的对象和 paging.next ,即使没有“上一个”和“下一个”数据。

  • 查询这些 URL 结果为 responsedata数组,没有 paging对象,所以我无法返回无状态应用程序。

  • 如果没有 paging.previous 不是更好吗?在收藏的开头,没有 paging.next在收集结束时?

最佳答案

对于看到此内容的任何人 - 这实际上是可行的。我不确定 Graph 分页对象以前是否总是返回上一个和下一个,或者 OP 是否在任何地方犯了错误。但是,我可以确认当数据能够按照您的预期前进或后退时,它会正确返回上一个/下一个。

以下示例来自 Graph API 分页文档,显示的结果集是集合的第一页。

"data": [
*data returned*
],
"paging": {
"cursors": {
"before": "WTI5dGJXVnVkRjlqZAFhKemIzSTZANVGd3T1Rrek9UZAzROVGN3TlRNNE5Eb3hOVEV6TURnM09UTTIZD",
"after": "WTI5dGJXVnVkRjlqZAFhKemIzSTZANVGd4TURBd09UazROVFk1T0RNM05Eb3hOVEV6TURreU5qQXoZD"
},
"next": "https://graph.intern.facebook.com/v2.11/1809938745705498/comments?access_token=valid_token_goes_here"
}

请注意对象中缺少“previous”属性。仅仅检查下一个或上一个是否存在就足以让我继续禁用/隐藏按钮。

关于facebook-graph-api - 查询 Facebook Graph API 时如何找出我在最后一页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41272114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com