Как получить количество друзей, добавленных пользователем Facebook в определенный период времени? - PullRequest
10 голосов
/ 01 марта 2012

Нам нужно получить количество друзей, добавленных пользователем Facebook за последний месяц.Мы искали в Graph API, но не нашли никакого решения.

Ответы [ 2 ]

3 голосов
/ 01 марта 2012

Я думаю, что вы должны использовать уведомление 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 friends или is now friends, (обратите внимание, что слова предложений зависят от настроек языка клиента (?)). Таким образом, вы будете соответствовать всем строкам:

  • X и Y теперь друзья
  • X теперь дружит с X и Y ...

Каждый запрос таблицы потоков ограничен предыдущими 30 днями или 50 сообщениями, в зависимости от того, что больше, однако вы можете использовать поля, зависящие от времени, такие как create_time, вместе с операторами FQL (например, <или>) для получения больший ассортимент постов. 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"

0 голосов
/ 16 марта 2012
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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...