Facebook Messgaes получить имя отправителя
Я использую Facebook FQL для получения почтовых ящиков пользователей.
Следующий запрос возвращает все значения.
SELECT message_id, thread_id, author_id, body, created_time, attachment,
viewer_id FROM message WHERE thread_id = <thread_id>
Я хочу получить auther_name и viewer_name.
Прямо сейчас я использую этот трюк, чтобы получить имена из идентификаторов, но он очень медленный, потому что сначала я должен получить сообщения, а затем проанализировать ответ, чтобы получить имена.
function getName($id)
{
$facebookUrl = "https://graph.facebook.com/".$id;
$str = file_get_contents($facebookUrl);
$result = json_decode($str);
return $result->name;
}
Пожалуйста, помогите мне, как я могу получить имя при получении сообщений с использованием FQL.
1 ответ
Решение
Использовать fql multiquery: https://developers.facebook.com/docs/reference/rest/fql.multiquery/
$queries = array(
'messages' => 'SELECT message_id, thread_id, author_id, body, created_time, attachment, viewer_id FROM message WHERE thread_id = <thread_id>',
'users' => 'SELECT name FROM profile WHERE id IN (SELECT author_id FROM #messages)',
);
$param = array(
'method' => 'fql.multiquery',
'queries' => json_encode($queries),
'callback' => ''
);
try {
$fqlresult = $facebook->api($param);
} catch (FacebookApiException $e) {
echo "EXCEPTION {$e->getMessage()}\n";
}