【问题标题】:Retrieve the list of friends that did a custom action on a custom object in open graph 2在打开的图表 2 中检索对自定义对象执行自定义操作的朋友列表
【发布时间】:2013-02-22 14:34:39
【问题描述】:

我想使用带有打开图 2 操作的图 api 执行类似 facepile 的操作:从自定义对象和自定义对象,给我(使用我的 facebook 应用程序)对这个对象执行此操作的朋友。

问题是使用 FQL,我无法查询自定义对象和操作。使用图形 API,我找不到将朋友列表与我感兴趣的对象相交的方法。

我能做的最好的事情是使用图形 API 的批处理模式:

batch=[
  // First we get the list of friends that are using my facebook application
  { "method": "GET", "relative_url": "fql?q=SELECT+uid+FROM+user+WHERE+uid+IN+(SELECT+uid1+FROM+friend+WHERE+uid2=me())+AND+is_app_user=1+LIMIT+0,49", "name": "friends"},
  // Then query each friend to get the list of objects that went through my namespace:testaction
  { "method": "GET", "relative_url": "{result=friends:$.data.0.uid}/namespace:testaction" },
  { "method": "GET", "relative_url": "{result=friends:$.data.1.uid}/namespace:testaction" },
  ...
  { "method": "GET", "relative_url": "{result=friends:$.data.49.uid}/namespace:testaction" }
]

这是非常低效的,并没有完全解决我的问题,因为:

  • 我仍然需要过滤结果以仅获得匹配的结果 我想要的对象
  • 如果namespace:testaction中有大量的对象,我必须通过分页,做更多的查询(我尽量减少查询的数量)

你有没有更好的方法来做到这一点?

【问题讨论】:

  • 尝试使用 Facebook Activity 插件和自定义打开图形操作,正如我所描述的 here
  • 情况变了还是我们还要使用批量请求?

标签: api facebook-graph-api facebook-opengraph facebook-social-plugins open-graph-beta


【解决方案1】:

这可能不是您正在寻找的内容,但鉴于 facebook (AFAIK) 不提供(并且可能永远不会提供)执行此操作的能力。我认为您应该简单地自己存储信息,然后从自己的数据库中查询数据。这就像您在问题中所做的那样,但您可以优化它,因为它是您的数据库。

我确定您已经考虑过这个问题,但必须有人说出来。

【讨论】:

  • 我真的只想使用 facebook API。我目前正在复制数据,并希望迁移到完整的 facebook-api 解决方案。
  • 就像我在回答中所说的“这可能不是您想要的”,但是如果您正在寻找完整的 facebook api 解决方案,那么您将受限于 facebook 将让你做。无论您多么希望它,都无法解决这个问题。 FQL 不允许您这样做,API 不允许您这样做。要么你变得依赖 facebook,只做他们让你做的事,要么你复制数据,做任何你想做的事。就这么简单,没有隐藏的解决方案。同样,可能不是您想听到的。
【解决方案2】:

现在可以通过一个 Graph API 请求来做到这一点:

GET https://graph.facebook.com/me/friends?limit=50&fields=name,namespace:testaction.limit(100)

field expansionupdates to the graph API

【讨论】:

  • 迟到几天才能领取我的赏金 - 很抱歉,但非常感谢您让我们知道。
  • 只是展示了 FB API 的易变性。希望这不会在未来被拉扯或修改。
【解决方案3】:

如果 derickito 给出的答案还不够,您应该探索将您的应用列入 Facebook 白名单(也就是成为合作伙伴),以获取可能存在此功能但不适用于“使用公共 Graph API 卡住的“普通”应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 2013-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多