Имя пользователя не входит в пользовательскую таблицу facebook api

Последние несколько лет я использовал FQL Facebook, в котором я собирал данные о последних комментариях фанатов на одной из моих страниц. Для этого я был вынужден использовать 2 соединения таблиц. Я мог бы сделать это с помощью fql.multiquery.

Небольшой код этого:

$query1 = "SELECT source_id, post_id, created_time , actor_id, target_id, message FROM stream WHERE source_id = ".$page_id." AND actor_id != ".$page_id."ORDER BY created_time DESC
LIMIT 3";
$query2 = "SELECT username, uid, first_name, last_name FROM user WHERE uid in (SELECT actor_id FROM #query1)";

$multiQuery = array
(
"query1" => $query1,
"query2" => $query2,
);

$param = array(
'method' => 'fql.multiquery',
'queries' => $multiQuery,
'callback' => '');
$queryresults = $facebook->api($param);

Сегодня я получил ошибку «имя пользователя не является членом пользовательской таблицы Facebook API».

  • Я искал поля таблицы пользователя Facebook (возможно, они изменились).
  • Пробовал ‘SELECT *’ — другая ошибка (не допускается)

На Facebook я обнаружил, что скоро (в апреле) API 2.0 будет закрыт. И 2.1 FQL устарела.

Я хочу исправить это простым способом.

Любая информация будет полезна.

2

Решение

Это правильно, что username поле устарело с использованием Graph API v2.0 и выше. Я бы порекомендовал использовать uid поле вместо

Проблема в том, что вы используете неверную конечную точку с вашим FQL-запросом. fql.multiquery разрешает использовать старый API REST, который не рекомендуется использовать 30 апреля 2015 г.

Обычная «новая» конечная точка FQL в Graph API /fql?q={query}и вы можете использовать пакетный API для запуска нескольких запросов одновременно. Если у вас есть приложение v2.0, вы можете использовать FQL до 7 августа 2016 года.

Увидеть

1

Другие решения

Ты прав. Поле имени пользователя было удалено в API v2.0 и позже. Таким образом, у вас нет возможности получить к нему доступ.

2

Хорошо, вот мое решение на данный момент … Благодаря Тоби, я выбрал / fql? Q = метод
так вот мой код, если кому-то понадобится.

function getcontents($query,$access_token)
{
$url = "https://graph.facebook.com/fql?q=".urlencode($query);
$url .= "&access_token=".$access_token;
$content = file_get_contents($url);
$content = json_decode($content);

return $content;
}

// ———

$query1 = "SELECT source_id, post_id, created_time , actor_id, target_id, message FROM stream WHERE source_id = ".$page_id." AND actor_id != ".$page_id."ORDER BY created_time DESC
LIMIT 3
";

$content = getcontents($query1,$access_token);

$actor_ids = array();
foreach ($content->data as $key => $value)
{
$data[$value->actor_id] = $value;
$actor_ids[] = $value->actor_id;
}

$query2 = "SELECT username, uid, first_name, last_name FROM user WHERE uid in (".implode(",",$actor_ids).")";
$content = getcontents($query2,$access_token);

foreach ($content->data as $key => $value)
{
$data[$value->uid] = array_merge((array) $data[$value->uid],(array) $value);
}

Работает сейчас …

0
По вопросам рекламы [email protected]