Многие сайты публикуют в социальных сетях информацию о новых материалах, это можно сделать и для Facebook. Предполагается, что вы уже создали приложение и указали разрешенные хосты для перенаправления OAuth во вкладке «Дополнительно» пункта меню «Настройки». Итак, запускаем сессию функцией session_start(), кому надо, тот может включить вывод ошибок, если он отключен.
error_reporting(E_ALL);
ini_set("display_errors", 1);
require_once __DIR__ . '/папка_src/autoload.php';
$fb = new Facebook\Facebook([
'app_id' => '1234567890123456', //Замените на ваш id приложения
'app_secret' => '12345678901234567890123456789012' //Ваш секрет приложения
]);
$helper = $fb->getRedirectLoginHelper();
//Добавьте разрешение publish_actions, чтобы постить от имени пользователя, а не от имени страницы
$permissions = ['manage_pages','publish_pages'];
$loginUrl = $helper->getLoginUrl('url_куда_перейти_после_входа', $permissions);
echo '<a href="' . htmlspecialchars($loginUrl) . '">Вход</a>';
$helper = $fb->getRedirectLoginHelper();
try {
$accessToken = $helper->getAccessToken();
}
catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph вернул ошибку: ' . $e->getMessage();
exit;
}
catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK вернул ошибку: ' . $e->getMessage();
exit;
}
if (isset($accessToken))
$_SESSION['facebook_access_token'] = (string) $accessToken;
elseif ($helper->getError())
exit;
try {
$response = $fb->get('/id_страницы?fields=access_token', $_SESSION['facebook_access_token']);
}
catch (Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph вернул ошибку: ' . $e->getMessage();
exit;
}
catch (Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK вернул ошибку: ' . $e->getMessage();
exit;
}
//Токен страницы
echo $response->getGraphNode()['access_token'];
$str_page = '/1234567890123456/feed';
$feed = array('message' => 'тест');
try {
$response = $fb->post($str_page, $feed, 'access_token_страницы');
}
catch (Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph вернул ошибку: ' . $e->getMessage();
exit;
}
catch (Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK вернул ошибку: ' . $e->getMessage();
exit;
}
$graphNode = $response->getGraphNode();
echo 'Опубликовано, id: ' . $graphNode['id'];
$helper = $fb->getRedirectLoginHelper();
$logoutUrl = $helper->getLogoutUrl($_SESSION['facebook_access_token'], 'url_куда_перейти_после_выхода');
echo '<a href="' . htmlspecialchars($logoutUrl) . '">Выход</a>';
К сожалению, не доступен сервер mySQL