Текущий UID Facebook с FQL
-
19-09-2019 - |
Вопрос
Как я могу получить свой текущий UID с помощью FQL..я хочу сэкономить трафик и запросы, получая друзей пользователя с помощью fql.multiquery
"запрос1":Получите мне, что My userId "Query2": "Выберите uid, first_name, last_name от пользователя, где uid in (выберите UID2 из друга, где uid1 = myuserid) порядок от first_name"
должен вернуть моих друзей!для получения пользователей с помощью friends.get, а затем user.getInfo требуется 2 запроса, и это не оптимально...
Спасибо
Решение
Ваш первый запрос должен быть совершенно ненужным, поскольку Facebook всегда предоставляет uid
в заявку через fb_sig_user
параметр (POST или GET).Я не уверен, какой FQL-запрос вы могли бы использовать, чтобы получить uid
на основе какой-то другой информации.Нет никаких sessions
таблицу или что-либо, доступное для FQL (доступные таблицы перечислены здесь).
Однако для нескольких запросов я вполне уверен, что эта страница описывает именно то, что вам нужно сделать, но я напишу некоторый код так, как я бы это сделал.
Если бы это было приложение PHP, и я хотел бы сделать это на стороне сервера, я бы создал пару строк в формате JSON и отправил их в виде запроса следующим образом:
$fql= '{
"userinfo":"SELECT uid FROM user_standard_info WHERE first_name=\'zombat\'",
"friends":"SELECT uid2 FROM friend WHERE uid1 IN (SELECT uid FROM #userinfo)}"
}';
$res = $facebook->api_client->fql_multiquery($fql);
print_r($res['userinfo']);
print_r($res['friends']);
Это должно привести к созданию дампа результатов вашего запроса.
Предполагая, что у вас есть текущий uid
доступен из fb_sig_user
параметр (который вам нужен), то ваша проблема должна быть решена примерно так:
$fql= '{
"friends":"SELECT uid2 FROM friend WHERE uid1='.$your_uid.',"
"friendinfo":"SELECT * FROM standard_user_info WHERE uid IN (SELECT uid2 FROM #friends)"
}';
$res = $facebook->api_client->fql_multiquery($fql);
Примечание:Возможно, вам захочется внимательно просмотреть некоторые запросы, которые вы пытаетесь выполнить.Многие таблицы, например friend
, можно использовать только в том случае, если вы имеете дело с вошедшим в систему пользователем.
Другие советы
Функция me()
возвращает ваш идентификатор пользователя в FQL.
Чтобы получить список ваших друзей, вы можете использовать:
SELECT uid, first_name, last_name
FROM user
WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())
Вы можете найти документацию по этому вопросу здесь: http://developers.facebook.com/docs/reference/fql/