Facebook Graph API PHP SDK v4 – Опубликовать на странице

Я хочу дать всем авторам веб-сайта возможность опубликовать свои статьи на нашей странице в facebook, не предоставив им доступ администратора к нему.

Поэтому я создал простую форму, в которой автор вводит: URL, URL-адрес изображения, сообщение

В режиме отправки эта форма отправит запрос ajax на facebook.php, где должно произойти волшебство.

Первая проблема возникает при «require_once». Невозможно потребовать все 4 файла без ошибки. Если я избавлюсь от исключения facebook, тогда все будет работать, кроме самого запроса. Кажется, что есть ошибка PHP, потому что я вообще не получаю никакого ответа от ajax.

session_start(); require_once($_SERVER['DOCUMENT_ROOT'].'/sys/facebook/FacebookSession.php'); require_once($_SERVER['DOCUMENT_ROOT'].'/sys/facebook/FacebookRequest.php'); require_once($_SERVER['DOCUMENT_ROOT'].'/sys/facebook/GraphObject.php'); require_once($_SERVER['DOCUMENT_ROOT'].'/sys/facebook/FacebookRequestException.php'); use Facebook\FacebookSession; use Facebook\FacebookRequest; use Facebook\GraphObject; use Facebook\FacebookRequestException; $message = safe($_POST["message"]); $url = safe($_POST["url"]); $image = safe($_POST["image"]); if($message == "" OR $url == "" OR $image == ""){ echo "incomplete"; return; } FacebookSession::setDefaultApplication('{APP ID}','{APP SECRET}'); $session = new FacebookSession('{Page Access Token}'); if($session) { try { $response = (new FacebookRequest( $session, 'POST', '/{Page ID}/feed', array( 'message' => $message, 'link' => $url, 'picture' => $image ) ))->execute()->getGraphObject(); echo "Posted with id: " . $response->getProperty('id'); } catch(FacebookRequestException $e) { echo "Exception occured, code: " . $e->getCode(); echo " with message: " . $e->getMessage(); } } else { echo "No Session available!"; } 

Related of "Facebook Graph API PHP SDK v4 – Опубликовать на странице"

Обновление: 27 июня 2014 года. Теперь SDK оснащен встроенным автозагрузчиком для тех, кто не может использовать композитор.

 require __DIR__ . '/path/to/facebook-php-sdk-v4/autoload.php'; 

Если этот путь автоматически не найден, вы можете определить его с помощью FACEBOOK_SDK_V4_SRC_DIR .

 define('FACEBOOK_SDK_V4_SRC_DIR', '/path/to/facebook-php-sdk-v4/src/Facebook/'); require __DIR__ . '/path/to/facebook-php-sdk-v4/autoload.php'; 

Внутренние части SDK полагаются на несколько других классов, которые вы не включаете. Вот почему автозагрузка действительно важна здесь.

Автозагрузка с композитором

Лучший способ сделать это – установить композитор . И добавьте SDK в файл composer.json в корень вашего проекта.

 { "require" : { "facebook/php-sdk-v4" : "4.0.*" } } 

Затем запустите composer install из командной строки, где находится файл composer.json . Затем включите автозагрузчик в верхней части вашего скрипта.

 require_once __DIR__ . '/vendor/autoload.php'; 

Ручная автозагрузка

Альтернативным способом автозагрузки этих файлов является замена вашего require_once вверху этим решением от rm-vanda :

 function facebookLoader($class) { require "/path/to/facebook-php-sdk-v4-master/src/" . str_replace("\\", "/", $class) . ".php"; } spl_autoload_register("facebookLoader");