我使用OpenGraph构建了一个Facebook应用程序,允许用户在音乐会上撰写评论,这样我就定义了一个concert_id属性,用户可以在其上插入评论。
现在我想显示为某个concert_id插入的所有评论,但找不到方法;如果我这样做(在JS中)
FB.api('/me/MY_APP:action', { limit: 0}, function(response) {
console.log(response);
});
我收到所有物品。这个应用程序必须由移动消费,我认为获取所有项目是不好的,然后,只过滤我需要的concert_id。如何将OpenGraph中的“where”条件应用于自定义操作?
答案 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) {
//这里是响应值 });