Получить последний пост со страницы facebook (лента)

Я пытаюсь получить последнюю публикацию в facebook со страницы facebook. Я работаю с facebook php SDK v4 (https://github.com/facebook/facebook-php-sdk-v4/).

Я добавил библиотеку (php sdk) в composer: composer require facebook/php-sdk-v4. Мой секрет приложения/приложения и идентификатор страницы верны.

$config = array();
$config['app_id'] = 'myappid';
$config['app_secret'] = 'myappsecret';

$facebook = new \Facebook\Facebook($config);

$pageid = 'mypageid';

try {

    $pagefeed = $facebook->api("/" . $pageid . "/feed");
}
catch(Exception $ex){
    echo $ex->getMessage(); die;
}

Проблема в том, что я получаю сообщение об ошибке Вызов неопределенного метода Facebook\Facebook::api(). Когда я искал в других темах в Интернете, они часто использовали это. Но что я делаю неправильно?


person nielsv    schedule 30.03.2016    source источник
comment
Насколько я понимаю, api не является функцией ни в одном из PHP-файлов Facebook. Хм. Вы пробовали использовать функцию $facebook->get()?   -  person owenvoke    schedule 30.03.2016
comment
Да, здесь нет метода API, только методы получения и публикации. Посмотрите здесь sammyk.me/upgrading- the-facebook-php-sdk-from-v4-to-v5)   -  person KubiRoazhon    schedule 30.03.2016
comment
На самом деле это v5 SDK (см. readme на github, они просто сохранили старый URL-адрес). v4 действительно имел метод api, но в v5 он был удален. Вы всегда должны сначала прочитать официальную документацию: developers.facebook.com/docs/php /апи/5.0.0   -  person CBroe    schedule 30.03.2016


Ответы (1)


Согласно документам вы можете получить страницу кормить, используя следующий код:

$request = new FacebookRequest(
  $fbApp,
  '{access-token}',
  'GET',
  '/{page-id}/feed'
);
$response = $request->execute();
$graphObject = $response->getGraphObject();
/* handle the result */

Источник: https://developers.facebook.com/docs/graph-api/reference/v2.5/page/feed

Обратите внимание, что в примерах на этой странице по умолчанию используются версии HTTP, а не PHP SDK.

Изменить: добавлены правильные параметры для функции FacebookRequest.

Требуется токен доступа и экземпляр $app, как показано ниже.

Facebook\FacebookRequest($fbApp, '{access-token}', 'GET', '/{page-id}/feed');

Маркер доступа можно создать с помощью функции getAccessToken(), как показано ниже.

$access_token =  $facebook->getAccessToken();
$facebook->setAccessToken($access_token);

В версии 4 API использовалась система сеансов, которую можно найти здесь: https://developers.facebook.com/docs/php/FacebookSession/4.0.0

Создайте переменную сеанса Facebook, а затем вы можете использовать этот $session в исходном методе запроса v4.

$request = new FacebookRequest(
  $session,
  'GET',
  '/{page-id}/feed'
);
$response = $request->execute();
$graphObject = $response->getGraphObject();
/* handle the result */
person owenvoke    schedule 30.03.2016
comment
А что такое переменная $session? - person nielsv; 30.03.2016
comment
Прости. $session, по-видимому, был удален в v5 API. Я обновил его, чтобы включить информацию о последней версии. Если вы не обновились до v5 API по ссылке v4 Github, вы можете использовать информацию внизу :) - person owenvoke; 30.03.2016
comment
Спасибо за информацию, но что такое переменная $fbApp? И как я могу получить токен доступа? - person nielsv; 30.03.2016
comment
$fbApp является экземпляром класса FacebookApp. Если вы используете API, вы, вероятно, уже создали его. Если нет, я добавлю немного больше информации в немного. Чтобы получить токен доступа, вам необходимо использовать API аутентификации. Я предоставил ссылку, но подробнее расскажу об этом, когда вернусь к своему компьютеру. :) - person owenvoke; 30.03.2016
comment
Хорошо спасибо. Мне пока не очень понятно :) - person nielsv; 30.03.2016
comment
Извините, что так долго не отвечал. С API для создания переменной $fbApp это будет: $fbApp = new Facebook\FacebookApp('{app-id}', '{app-secret}'); Создается новый экземпляр FacebookApp. Для AccessToken это будет: $accessToken = new Facebook\Authentication\AccessToken('{access-token}'); - person owenvoke; 07.04.2016