Вопрос

Как я могу получить свой текущий 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/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top