一种使用单个请求查询新闻源和墙的方法

发布于 2024-12-29 12:48:41 字数 709 浏览 1 评论 0原文

我正在尝试找到使用单个请求查询新闻提要和墙的最佳方法。

第一次尝试:

  • 批量请求查询me/home和me/feed。
  • 问题:由于 Graph API 错误(显示被阻止的项目,相反不显示一些应该显示的项目),查询 me/home 给了我不好的结果,所以我决定更改为 FQL,这似乎可以更好地处理它。

第二次尝试:

  • 使用单批请求查询: (1)我/直接喂食。 (2) fql.query 流表,filter_key 设置为“others”。
  • 问题:还需要查询用户名,因为流表只包含 id。

第三次尝试:

  • 使用批量请求查询: (1)我/直接喂食 (2) fql.multiquery 用于流表,filter_key 设置为“others”,名称表为“WHERE id IN (SELECT actor_id FROM #stream)”。
  • 问题:失败。它返回“错误:批处理参数必须是 JSON 数组”,尽管它是 json 数组。

第四次尝试:

  • 使用 fql.multiquery 获取新闻源流、墙流和名称。
  • 问题:我不知道如何使用 FQL 获得与 me/feed 类似的视图。我能得到的最好的结果是我自己的所有帖子的列表,但它没有显示用户被标记的照片(所以我猜缺少更多的东西)。

感谢任何提示。

I'm trying to find the best way to query both news feed and wall using a single request.

First attempt:

  • Query me/home and me/feed in batch request.
  • Problem: querying me/home gives me bad results due to Graph API bugs (showing blocked items and on the contrary not showing some items that should be shown) so I decided to change to FQL which seems to handle it much better.

Second attempt:

  • Use single batch request to query:
    (1) me/feed directly.
    (2) fql.query for stream table with filter_key set to 'others'.
  • Problem: Needs to also query for user names because the stream table contains only ids.

Third attempt:

  • Use batch request to query:
    (1) me/feed directly
    (2) fql.multiquery for stream table with filter_key set to 'others' and the names table with "WHERE id IN (SELECT actor_id FROM #stream)".
  • Problem: Fails. It returns "Error: batch parameter must be a JSON array" although it is a json array.

Fourth Attempt:

  • Use fql.multiquery to get news feed stream, wall stream and names.
  • Problem: I have no idea how to get a view similar to me/feed using FQL. The best I could get is a list of all my own posts but it doesn't show photos the user is tagged in (so I guess more things are missing).

Appreciate any hints.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你的背包 2025-01-05 12:48:41

由于 FQL 不执行 SQL 样式联接,目前不可能在一个查询中从多个表获取信息。

  1. 在流表上使用 FQL 来获取要显示的帖子列表,请务必获取 source_id。 source_id 可以是用户 id、页面 id、事件 id、组 id,并且可能还有更多对象,只是我记不住了。 (您可能还想对 actor_id、target_id 和viewer_id 进行类似的缓存)
  2. 将 source_ids 缓存在字典样式数据缓存中,其中 source_id 是 PK。
  3. 循环遍历缓存,查找没有信息的信息。
  4. 尝试根据 id 从用户表中获取信息,然后是页表、事件表和组表,直到找到该 ID 所属的信息。将信息存储在缓存中
  5. 以供显示,将流表项与 source_id 信息合并在一起。

Due to FQL not doing SQL style joins, getting information from multiple tables in one query is currently impossible.

  1. Use FQL on the stream table to get the list of posts you want to display be sure to grab the source_id. The source_id can be a user id, page id, event id, group id, and there may be more objects too, just don't remember off the top of my head. (You may also want to do similar caching of the actor_id, target_id and viewer_id)
  2. Cache the source_ids in a dictionary style data cache with source_id being the PK.
  3. Loop thru the cache for ones you don't have information on
  4. Try grabbing the information from the user table based upon id, then next the page table, then event table, and group table until you can find what that ID belongs to. Store the information in your cache
  5. For display merge together the stream table items with the source_id information.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文