4

我已经使用 OpenGraph 构建了一个 Facebook 应用程序,该应用程序允许用户在音乐会上撰写评论,因此我定义了一个concert_id用户可以插入评论的属性。

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

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

我得到所有物品。这个应用程序必须由移动设备使用,我认为获取所有项目然后只过滤concert_id我需要的东西是不好的。我需要做什么才能将whereOpenGraph 中的条件应用于自定义操作?

4

5 回答 5

5

据我从 API 和 Facebook 开发人员页面得知,无法使用公共 Open Graph API 通过自定义操作属性过滤调用。

我能想到的两个选择:

选项1:

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

如果“review”是一个自定义操作并且

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 

这些不是特别优雅的解决方案,但如果没有其他方法,并且您真的不想在客户端进行过滤,它们可能作为一种黑客有用。

于 2012-04-23T14:24:17.527 回答
2

我不懂javascript或opengraph ..

但是当我需要在 JAVA 中获取任何用户的评论时,我使用了FQL,它检索了我所有的评论,FQL 也用于获取与 Facebook 相关的所有表格。

于 2012-04-28T09:56:26.223 回答
2

Facebook API 不会为特定操作返回单独的已发布对象,但这不是您唯一的问题。从表面上看,您是在尝试将所有针对音乐会的评论都纳入其中,对吗?(也意味着其他用户的那些)。

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

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

于 2012-04-28T10:14:45.887 回答
1

我认为您无法使用 JS SDK 实现这一目标。

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

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

开放图的东西仍然很新,而且还不够成熟,例如,您不能将 FQL 与它一起使用,这对您的情况可能很方便。无论如何,我认为服务器解决方案最适合移动设备的计算。

于 2012-04-29T07:49:36.053 回答
0

我不知道,但试试这个

如果(会话.authResponse){

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

//这里是响应值 });

于 2014-03-03T07:39:01.237 回答