О новых методах работы Facebook API Graph 2.1 и выше

Опубликовано 8 лет назад

7 августа 2016 года Facebook официально прекратил поддержку API Graph 2.0, а с ним и старого FQL (Facebook Query Language), с помощью которого мы раньше запрашивали количество лайков, репостов и другие данные.

В API Graph 2.0 запросы осуществлялись без авторизации. В новых версиях для выполнения запросов необходимо получение токенов. В противном случае в ответ получим: «An access token is required to request this resource».

{
   "error": {
      "message": "An access token is required to request this resource.",
      "type": "OAuthException",
      "code": 104,
      "fbtrace_id": "CcKj4y89cpL"
   }
}

Как видим, для доступа требуется токен. Чтобы его получить понадобится идентификатор приложения и его т.н. секрет:

Facebook for developers

Эти данные нужно сохранить, они понадобятся при выполнении запросов.

Как получить число подписчиков страницы в Facebook с помощью новых версий API Graph

В примерах я буду использовать самую свежую на данный момент версию API Graph 2.8.

На самом деле все очень просто, создаём функцию fb_fans_count().

function fb_fans_count($fbid,$app_id,$app_secret) {
	$urls = 'https://graph.facebook.com/v2.8/'. $fbid . '?fields=fan_count&access_token='. $app_id . '|' . $app_secret;
	$string = @file_get_contents( $urls );
	if($string) {
		$fan_count = json_decode( $string );
		$get_fan_count = $fan_count->fan_count;
		return $get_fan_count;
	}
}

В WordPress функцию можно вынести в functions.php, а ещё лучше в функциональный плагин.

Функция вызывается следующим образом:

echo fb_fans_count($fbid,$app_id,$app_secret);
  • $fbid — идентификатор страницы. Для страницы https://www.facebook.com/danilin.biz в качестве $fbid можно использовать «danilin.biz», например.
  • $app_id — идентификатор приложения.
  • $app_secret — секрет приложения.

Как получить число репостов страницы в Facebook с помощью новых версий API Graph

Функция fb_post_share_count() похожа на предыдущую, в WordPress ее можно аналогично вынести в functions.php или плагин.

function fb_post_share_count($url,$app_id,$app_secret) {
	$urls = 'https://graph.facebook.com/v2.8/?id='. urlencode($url) . '&access_token='. $app_id . '|' . $app_secret;
	$string = @file_get_contents( $urls );
	if($string) {
		$fan_count = json_decode( $string,true );
		return intval($fan_count['share']['share_count']);
	}
}

Функция вызывается аналогичным образом с передачей $app_id и $app_secret. В качестве $url указывается URL запрашиваемой страницы.

echo fb_post_share_count($url,$app_id,$app_secret);

Вызов функции в WordPress можно осуществить, задав в качестве $url функцию WordPress get_permalink(). Тогда $url будет подставляться автоматически. Например, так:

echo fb_post_share_count(get_permalink(), $app_id,$app_secret);

Обратите внимание.

Работа функций протестирована на Facebook API Graph версий 2.1-2.8. Их работоспособность на более новых версиях не гарантируется, но и не исключается. Постараюсь своевременно оповещать обо всех изменениях в API.

Иван Данилин
Автор Иван Данилин

Фулстек веб‑разработчик, специализируюсь на платформе WordPress

Подробнее
Комментарии
Добавить комментарий