2012-04-19 49 views
4

我已经使用OpenGraph构建了一个Facebook应用程序,允许用户在音乐会上撰写评论,以便我定义了一个concert_id属性,用户可以在其中插入评论。OpenGraph:我如何在FB.api中指定一个过滤器?

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

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

我得到的所有项目。这个应用程序必须通过手机消费,我认为这是不好的,得到所有的项目,然后,只筛选我需要的concert_id。我需要做什么才能将OpenGraph中的“where”条件应用于自定义操作?

回答

2

Facebook API不会为特定操作返回单个发布的对象,但这不是唯一的问题。从它的外观来看,你试图把所有的音乐会评论都带进去,对吧? (也是其他用户的意思)。

的“/我/” Facebook的API调用将只返回由当前登录的用户做出的出版行为。这不会为你工作,你想那些所有用户

的一部分

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

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 

这些都不是特别优雅的解决方案,但也许是一个黑客有用的,如果没有别的工作,你真的不想做客户端过滤。

+0

嗨,谢谢你的回答,但我该如何处理打电话给 GET https://graph.facebook.com/me/[name_space]:review/scifi_movie? – Cris 2012-04-23 14:45:26

+0

[name_space]指您在Facebook上创建应用程序时指定的名称空间。所以你的电话将是FB.api('我/ mynamespace:审查/ scifi_movie',功能(响应)等... – 2012-04-23 14:55:54

+0

好吧,但把/ scifi_movie不适用过滤器。我的应用程序允许插入评论音乐会,基于concert_id; concert_id是一个自定义属性,但如果我打电话graph.facebook.com/me/[ns]:review/XY不起作用。当你在你的选项2中写道,我可以实现每个项目的自定义动作,但他们超过1000,不能应用:-( – Cris 2012-04-24 08:06:11

2

我不明白JavaScript或opengraph ..

但是,当我在JAVA需要获取由我用FQL对于任何用户做出评语,它retrived我所有的reviews和FQL也使用获取与Facebook相关的所有表格。

1

我不认为你可以用JS SDK来解决这个问题。

虽然你可以在服务器上这样做,并且由于这是一个移动应用程序(或者有一个移动版本),那么这是将其从客户端责任中移除的另一个很好的理由。

在服务器端,您可以要求facebook发布已发布的操作,对其进行过滤并返回响应。 你可以做的另一件事是将每个发布的动作保存在你的数据库中(在每个动作文章中,你应该从Facebook获得一个id,只要坚持),然后你可以根据你想要的标准/需要(因为你不再受facebook api限制)。

开放图形的东西还是很新的,而不是成熟的,例如你不能使用FQL,对你的情况可能很方便。 尽管我认为服务器解决方案最适合在移动设备上进行计算。

0

我并不确切地知道,但尝试这个

如果(session.authResponse){

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

//这里的响应值 });

相关问题