我一直在寻找一种方法来从图形 API 中为朋友提取最近的生活事件,但我遇到了位置的阻止程序。
我知道您可以向朋友查询他们的位置。但是是否有可能找到以前的位置历史记录(或者只是一般的历史记录,如果有人在工作中得到晋升,所以他们改变了角色?)。
请原谅我从手机发帖时缺少代码。
我所拥有的位置是: ->api('/me/friends?fields=name,location);
这适用于当前位置。
任何提示都会很棒。谢谢。
我一直在寻找一种方法来从图形 API 中为朋友提取最近的生活事件,但我遇到了位置的阻止程序。
我知道您可以向朋友查询他们的位置。但是是否有可能找到以前的位置历史记录(或者只是一般的历史记录,如果有人在工作中得到晋升,所以他们改变了角色?)。
请原谅我从手机发帖时缺少代码。
我所拥有的位置是: ->api('/me/friends?fields=name,location);
这适用于当前位置。
任何提示都会很棒。谢谢。
所以事实证明,最好的方法是对“流”表使用 FQL。从这里我们可以添加 WHERE 子句来完成我所追求的。最困难的部分是缺乏 Facebook 提供的特定领域的文档。“类型”。
https://developers.facebook.com/docs/reference/api/user/ https://developers.facebook.com/docs/reference/fql/stream/ 所需权限:“read_stream”
执行初始查询“SELECT post_id, actor_id, target_id, message FROM stream WHERE filter_key in (SELECT filter_key FROM stream_filter WHERE uid=me() AND type='newsfeed') AND is_hidden = 0”会为您提供一个广泛的更新列表新闻流。
因此,通过更改我的测试帐户上的一些内容,我能够找到与用户帐户上的活动更改相匹配的“类型”。
工作和教育是分组的。
所以说如果我们想要具体并寻找一个活动,我们可以将“类型”更改为等于上面提到的 id。
$query = "SELECT post_id, actor_id, target_id, message, created_time, description, description_tags, type, place FROM stream WHERE type = '62' filter_key in (SELECT filter_key FROM stream_filter WHERE uid=me())";
$response = $this->facebook->api('/fql?q=' . urlencode($query));
响应将如下所示:
'data' => array(
(int) 0 => array(
'post_id' => '100035395_38758242', //I've changed this post id to be random
'actor_id' => (int) 4242, //I've changed this actor_id to be random
'target_id' => null,
'message' => '',
'created_time' => (int) 1347601178,
'description' => 'Joe Smith updated his work and education on his timeline.',
'description_tags' => array(
(int) 0 => array(
(int) 0 => array(
'id' => (int) 4242, //I've changed this id to be random
'name' => 'Joe Smith',
'offset' => (int) 0,
'length' => (int) 8,
'type' => 'user'
)
)
),
'type' => (int) 305, //<--- Note the type id
'place' => null
),
);
现在我们需要意识到教育和工作历史可以结合起来,其他类型也可以结合使用。我们可以从这里直接查询“post_id”以获取与其相关的更多信息。
$post = $this->facebook->api('/100035395_38758242');
对此的响应可能是这样的:
array(
'id' => '100035395_38758242',
'from' => array(
'name' => 'Joe Smith',
'id' => '4242'
),
'story' => 'Joe Smith added Harvid University of America to his timeline.',
'story_tags' => array(
(int) 0 => array(
(int) 0 => array(
'id' => '4242',
'name' => 'Joe Smith',
'offset' => (int) 0,
'length' => (int) 8,
'type' => 'user'
)
)
),
'actions' => array(
(int) 0 => array(
'name' => 'Comment',
'link' => 'http://www.facebook.com/3535/posts/345345' //Changed
),
(int) 1 => array(
'name' => 'Like',
'link' => 'http://www.facebook.com/345345/posts/34534' //Changed
)
),
'type' => 'link',
'created_time' => '2012-09-14T05:39:38+0000',
'updated_time' => '2012-09-14T05:39:38+0000',
'comments' => array(
'count' => (int) 0
)
)
另一种方法是直接查询用户 ID 并提取与“类型”相关的字段。即“工作”或“教育”。
$friend = $this->facebook->api('/242?fields=work,name,education,id');
注意:如果您需要 X 周或几个月前的数据,您应该在对 Facebook 的查询中使用“created_time”,否则您将被限制为:每次查询 30 天或 50 个帖子。