我知道一个解决方案是使用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¢er=48.85,2.35&distance=1000&ids={result=likes-ids:$.data.*.likes.data.*.id}"}]'
每个批处理请求中有2个问题:
注意:用户的朋友不应该登录我的应用程序(这意味着我没有user_likes
的权限。
如果有人可以提供一些评论或想法,我将不胜感激。
答案 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¢er=48.85,2.35&distance=1000&ids=
,我不会按照您的想法做到这一点。 ids
似乎覆盖了类型,中心和距离。
e.g。 search?type=place¢er=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
只有使用请求应用的朋友才会被退回。