Нам нужно получить количество друзей, добавленных пользователем Facebook в прошлом месяце. Мы искали в Graph API, но не получили никакого решения.
Как получить количество друзей, добавленных пользователем facebook в определенное время?
Ответ 1
Я думаю, вы должны использовать уведомление FQL.
Но уведомление на самом деле ограничено до последних 7 дней.
Попробуйте этот запрос:
SELECT created_time, sender_id, title_html, href, object_type
FROM notification
WHERE recipient_id=me() and object_type = 'friend'
Update:
Другой подход, немного сложный.
Вы должны иметь возможность взглянуть на более старую дружбу на ваш 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 сообщениями, в зависимости от того, что больше, однако вы можете использовать определенные по времени поля, такие как created_time, вместе с операторами FQL (например, < или > ), чтобы получить гораздо больший диапазон должностей. https://developers.facebook.com/docs/reference/fql/stream/
Обновление 2:
Если вы хотите использовать только график api, насколько я знаю, у вас есть такое же ограничение fql (т.е. вы ограничены последними 7 днями).
https://graph.facebook.com/me/notifications?include_read=1
Но в этом случае вы не можете фильтровать для object_type
, и вы должны найти все title
сдерживания "accepted your friend request"
Ответ 2
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;