我正在编写一个循环评论的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);
我想知道是否有办法可以从用户的关系变化中获得评论
(用户从单身变为恋爱关系)
答案 0 :(得分:4)
这些关系状态更改目前无法通过Facebook API获得,因此附加到它们的注释也不是。通过API提供此功能已被请求数百次,我不知道他们为什么没有它。
答案 1 :(得分:3)
可以访问此信息。可以使用以下权限查看关系状态更新:user_relationships
和read_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_status
和user_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时,我可以得到评论。