如何检索位于特定位置并被用户的朋友喜欢的Facebook页面(地点)的ID?

时间:2015-01-22 17:57:05

标签: facebook facebook-graph-api

我知道一个解决方案是使用Facebook Graph API检索位于特定位置的地点的ID,以检索我的朋友喜欢的所有Facebook页面的ID,然后仅选择我的朋友喜欢的位置(使用"社交背景"这使我能够知道有多少朋友喜欢一个页面)。但它对我来说听起来不是最好的解决方案(它代表了很多数据)。

另一个解决方案可能是使用JSONPath表达式格式(https://developers.facebook.com/docs/graph-api/making-multiple-requests/)暗示请求中的操作之间的依赖关系,但正如文档中所述"出于安全原因,过滤器和脚本JSONPath构造是JSONPath表达式"中不允许使用,这极大地限制了此策略的有用性。

所以我尝试使用Batch Requests:

curl \                                                                                  
    -F 'access_token=...' \
    -F 'batch=[{"method":"GET", "name":"likes-ids", "relative_url":"me/friends?fields=likes{id}"}, {"method":"GET", "relative_url":"search?type=place&center=48.85,2.35&distance=1000&ids={result=likes-ids:$.data.*.likes.data.*.id}"}]'

每个批处理请求中有2个问题:

  1. 奇怪的是,"我/朋友?fields = likes {id}"让我有些喜欢 我的一些朋友(我认为可以得到所有的喜欢 作为friends_likes的所有朋友都已被弃用,请纠正我 我错了)
  2. 即使对于用户的朋友来说也是如此。喜欢我设法 检索,我从第二批请求中得不到任何结果。
  3. 注意:用户的朋友不应该登录我的应用程序(这意味着我没有user_likes的权限。

    如果有人可以提供一些评论或想法,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

您需要该朋友授予user_likes。您可能正在使用Graph API资源管理器,因此您的朋友可能已经测试并授予了user_likes权限(因此您可以看到一些而不是全部)

  

需要具有user_likes权限的用户访问令牌才能查看该人喜欢的所有网页。

https://developers.facebook.com/docs/graph-api/reference/v2.2/user/likes

请注意,它不会说朋友。

对于第二部分,您确定从批处理的第一部分返回的ID是否有地方的ID?对于每个朋友对象,只返回25个喜欢,你不能保证你得到的喜欢是类型的页面。

同样search?type=place&center=48.85,2.35&distance=1000&ids=,我不会按照您的想法做到这一点。 ids似乎覆盖了类型,中心和距离。

e.g。 search?type=place&center=48.85,2.35&distance=1000&ids=375093055847509

相同

search?ids=375093055847509

看起来像是一个错误,或者是一个预期的行为,与返回的id一样,覆盖其他所有参数。

总的来说,这个批量调用会起作用,你返回的结果对你想要的结果是不正确的。

所以唯一的方法确实是你有的初步计划,无论如何该查询只适用于使用你的应用的朋友。

https://developers.facebook.com/docs/graph-api/reference/v2.2/page.context/friends_who_like

  

只有使用请求应用的朋友才会被退回。