Я сохраняю запись всех пользователей моего приложения в локальной базе данных MySQL. У меня есть вся необходимая информация, необходимая для получения статуса онлайн-статуса пользователя [ UID, access_token
и предоставленного extended permission
].
Как получить статус присутствия в сети для всех пользователей?
Подход, который я использую в данный момент, заключается в том, чтобы запросить каждого пользователя отдельно:
$facebook->api(array ( 'access_token' => 'x', 'method' => 'fql.query', 'query' => "SELECT uid, name, first_name, last_name, online_presence FROM user WHERE uid = x" ));
Но это процедура приема времени с 150 пользователями. Я даже не говорю о 400+ или 1000+.
ps multiquery не работал для меня, потому что для запроса присутствия пользователя необходимо предоставить access_token
.
Мое решение:
SELECT name, uid, online_presence FROM user WHERE uid=me()
Для всех онлайн
SELECT name,uid FROM user WHERE online_presence IN ('active', 'idle')
С другом
SELECT name,uid FROM user WHERE online_presence IN ('active', 'idle') AND uid IN ( SELECT uid2 FROM friend WHERE uid1 = $user_id )
Это не вариант и с точки зрения того, зачем вам нужны эти данные, неясно, в чем его цель. Возможно, если бы вы могли предоставить больше информации, было бы доступно другое решение.
Другим жизнеспособным вариантом является использование API чата. Это скажет всем пользователям, которые настроены на онлайн-статус в чате Facebook. Это не было бы слишком надежным, так как это включает пользователей, которые обращаются к Facebook-чату (настольному / мобильному программному обеспечению), а не к фактическим пользователям сайта.