OpenGraph:我如何在FB.api中指定过滤器?

时间:2012-04-19 21:57:00

标签: facebook facebook-graph-api facebook-opengraph

我使用OpenGraph构建了一个Facebook应用程序,允许用户在音乐会上撰写评论,这样我就定义了一个concert_id属性,用户可以在其上插入评论。

现在我想显示为某个concert_id插入的所有评论,但找不到方法;如果我这样做(在JS中)

FB.api('/me/MY_APP:action', { limit: 0}, function(response) {
    console.log(response);
});

我收到所有物品。这个应用程序必须由移动消费,我认为获取所有项目是不好的,然后,只过滤我需要的concert_id。如何将OpenGraph中的“where”条件应用于自定义操作?

5 个答案:

答案 0 :(得分:5)

据我所知,从API和Facebook开发者页面可以看出,使用公共Open Graph API过滤自定义动作属性的调用是不可能的。

我能想到的两个选择:

选项1:

通过创建自定义类别对象来实施类别过滤器:

如果“审核”是自定义操作并且

GET https://graph.facebook.com/me/[name_space]:review

返回所有审核操作

GET https://graph.facebook.com/me/[name_space]:review/scifi_movie
GET https://graph.facebook.com/me/[name_space]:review/action_movie

返回特定于电影类型的操作,其中scifi_movie和action_movie是自定义对象。您需要为每个类别创建一个对象类型。

选项2:

为每个类别实施自定义操作,例如

review_scifi_movie
review_action_movie 

这些并不是特别优雅的解决方案,但如果没有别的方法可以作为黑客使用,你真的不想在客户端进行过滤。

答案 1 :(得分:2)

我不懂javascript或opengraph ..

但是当我在JAVA中要求获取任何用户的评论时,我已经使用了 FQL ,并且它重新获得了所有 reviews 和FQL也用于获取与Facebook相关的所有表格。

答案 2 :(得分:2)

Facebook API不会返回特定操作的单个已发布对象,但这不是您唯一的问题。从表面上看,你试图引入为音乐会提供的所有评论,对吧? (也指其他用户的那些)。

Facebook API调用的“/ me /”部分将仅返回当前登录用户所做的已发布操作。这对您不起作用,因为您需要所有用户的

我能给出的唯一建议是创建一个简单的Web服务,您可以在其中存储为各种音乐会提供的所有评论。使用此服务可以获取针对特定音乐会的评论。 (我在自己的应用程序中使用类似的方法进行评论。)

答案 3 :(得分:1)

我认为你不能用JS SDK解决这个问题。

您可以在服务器中执行此操作,因为这是一个移动应用程序(或具有移动版本),那么这是将其从客户端责任中移除的另一个好理由。

在服务器端,您可以在发布时向facebook询问已发布的操作,过滤它们然后返回响应。 您可以做的另一件事是将每个已发布的操作保存在您的数据库中(在每个操作帖子上,您应该从Facebook获取一个ID,只需保留该信息),然后您可以根据您想要的标准轻松过滤已发布的操作/需要(因为你不再受facebook api的限制)。

开放图形的东西仍然很新,而且还不成熟,例如你不能使用FQL,这可能对你的情况很方便。 尽管我认为服务器解决方案最适合用于移动时的计算。

答案 4 :(得分:0)

我不确切知道,但试试这个

if(session.authResponse){

    FB.api('/me', {
     fields: 'name, picture' // here mention your fields
    },
    function(response) {
      if (!response.error) {

//这里是响应值 });