如何获取facebook用户在特定时间段内添加的朋友数量?

时间:2012-03-01 09:21:01

标签: php facebook facebook-graph-api

我们需要在上个月获得Facebook用户添加的朋友数量。我们已经在Graph API中进行了搜索,但没有得到任何解决方案。

2 个答案:

答案 0 :(得分:3)

我认为您应该使用FQL通知 但通知实际上仅限于过去7天。

尝试此查询:

SELECT created_time, sender_id, title_html, href, object_type
FROM notification
WHERE recipient_id=me() and object_type = 'friend' 

<强>更新

另一种方法,有点棘手。
您应该能够在stream

中查看旧友谊
SELECT created_time, description FROM stream WHERE source_id = me()
and (strpos(lower(description),'are now friends') > 0 
    or strpos(lower(description),'is now friends') > 0) 
limit 50

通过这种方式,您可以获得包含句子are now friendsis now friends的所有行,(请注意句子词取决于客户(?)区域设置)。所以你将匹配所有行:

  • X和Y现在是朋友
  • X现在是X和Y的朋友......
  

流表的每个查询都限制在前30天或50个帖子中,以较大者为准,但是您可以使用特定时间字段(如created_time)和FQL运算符(例如&lt;或&gt;)来检索更多的帖子。   https://developers.facebook.com/docs/reference/fql/stream/

更新2:

如果你只想使用graph api,我知道你对fql有相同的限制(即你被限制在过去7天)。

https://graph.facebook.com/me/notifications?include_read=1

但是在这种情况下,您无法过滤object_type,而且必须找到所有title包含"accepted your friend request"

答案 1 :(得分:0)

try this..
$count=0;
$fbid=xxxxx;
$onemonthbefore = strtotime(date("Y-m-d",strtotime("-1 Months")));
$ss=urlencode("SELECT created_time,description_tags,source_id,description FROM     stream    WHERE source_id = xxxxxx and (strpos(lower(description),'are now friends') > 0  or strpos(lower(description),'is now friends') > 0) limit 100");
$sql="https://graph.facebook.com/fql?q=$ss&access_token=xxxxxxxxx&format=json&  date_format=U";
$new    =file_get_contents($sql);
$new    =json_decode($new);
foreach ($new->data as $data)
{
  if($data->created_time > $onemonthbefore)
  {
    foreach ($data->description_tags as $tags)
    {

   foreach ($tags as $friend)
   {
     if($friend->id !=$fbid)
      {
         $count++;
      }
   }
}
}
}
echo "new friends=".$count;