facebook关系状态更改评论

时间:2011-11-10 16:32:17

标签: php facebook facebook-graph-api

我正在编写一个循环评论的Facebook应用程序 我可以获得用户状态和他们的评论:

$facebook = new Facebook(array(
  'appId'  => APP_ID,
  'secret' => APP_SECRET,
));
$statuses = $facebook->api('/me/statuses/?token='.$session['access_token'],'GET',$params); 

以同样的方式我可以获得用户帖子:

$posts = $facebook->api('/me/posts/?token='.$session['access_token'],'GET',$params);

我想知道是否有办法可以从用户的关系变化中获得评论

  

(用户从单身变为恋爱关系)

2 个答案:

答案 0 :(得分:4)

这些关系状态更改目前无法通过Facebook API获得,因此附加到它们的注释也不是。通过API提供此功能已被请求数百次,我不知道他们为什么没有它。

答案 1 :(得分:3)

可以访问此信息。可以使用以下权限查看关系状态更新:user_relationshipsread_stream。要提取确切的故事(以及相关的评论),您必须解析结果,关系更新如下所示:

 {
  "id": "10000xxxxxxxxxx_2yyyyyyyyyy", 
  "from": {
    "name": "Foo Bar", 
    "id": "10000xxxxxxxxxx"
  }, 
  "story": "Foo Bar went from being \"in a relationship\" to \"single.\"", 
  "story_tags": {
    "0": [
      {
        "id": 10000xxxxxxxxxxx, 
        "name": "Foo Bar", 
        "offset": 0, 
        "length": 9, 
        "type": "user"
      }
    ]
  }, 
  "actions": [
    {
      "name": "Comment", 
      "link": "http://www.facebook.com/10000xxxxxxxxxx/posts/2yyyyyyyyyy"
    }, 
    {
      "name": "Like", 
      "link": "http://www.facebook.com/10000xxxxxxxxxx/posts/2yyyyyyyyyy"
    }
  ], 
  "type": "status", 
  "created_time": "2012-05-05T07:36:32+0000", 
  "updated_time": "2012-05-05T07:36:32+0000", 
  "comments":  {
    "data": [
      {
        "id": "10000xxxxxxxxxx_2yyyyyyyyyyy_7zzzzz", 
        "from": {
          "name": "Foo Bar", 
          "id": "10000xxxxxxxxxx"
        }, 
        "message": "YaY", 
        "created_time": "2012-05-05T07:45:31+0000"
      }
    ], 
    "count": 1
  }
},

如果故事中有两个用户(例如:XXX与YYY有关系),则'story_tags'字段的标签也会包含其他用户的ID。

我认为没有离婚,分居,丧偶(不确定)的更新。

其他关系更新可能(并非详尽无遗)如:

Alice is in a relationship with Bob and it's complicated.

Alice is in an open relationship with Bob.

Alice is single.

因此,为了提取更新,必须满足两个条件:字段'story'应该存在,并且它应该包含关键字关系之一,单一,参与或结婚。

获得故事/帖子ID后,可以轻松提取评论。

Api电话:

https://graph.facebook.com/me_or_id/feed

https://graph.facebook.com/me_or_id/posts

Api通话:https://graph.facebook.com/me_or_id/statuses未获得所需结果,即使有user_statususer_relationship_details权限也是如此。

AFAIK这是目前唯一的方法。

修改:FQL方式:

在fql中我们可以查询stream table。在文档中提到,每个帖子都有一个描述字段,如果它是一个自动生成的帖子,则该字段不为空,即不是由用户创建的,例如用户成为朋友或关系改变。其他帖子有一个消息字段(以及null描述字段)。我相信这个描述字段类似于图api方法的story字段。这样的自动生成的帖子将type设置为9,这在文档中没有提到(类型的解释是存在但不适用于类型9)。无论如何,我们可以使用这些附加条件进行限制性查询,并希望获得正确的数据,我们可能仍需要解析以删除其他故事,但至少要解析的数据将会更少。

查询:

SELECT post_id, type, description, comments FROM stream WHERE filter_key in (SELECT filter_key FROM stream_filter WHERE uid=me() AND type='newsfeed') AND is_hidden = 0 AND type = 9

您必须再次解析前面提到的关键字的说明字段。

注意:由于某种原因,我无法通过这一个查询得到评论(评论数组总是空的),但是当我从查询结果中调用带有post_id的图形api时,我可以得到评论。