Песочница →
Автоматическое добавление, удаление постов и комментариев к ним на Facebook
Доброго времени суток всем.
Хочу поделиться опытом автоматического добавления и последующего удалением новостей, а также комментариев к ним на страницах пользователей, групп, событий и фан. страниц Facebook.com.
Для реализации нам необходим PHP с подключенным модулем curl, PHP Facebook SDK ссылка.
Передо мной поставили задачу: из админ. панели сайта добавить новости в соответствующую группу в ВКонтакте и на фан. страницу Facebook.
Разобраться с контактом не составляло труда. Помогла статья эта и эта. Только я столкнулся с таким багом или ограничением: у меня метод wall.post не возвращает post_id, хотя в документации написано, что должен.
Но это тема другой статьи. Сейчас я хочу рассмотреть пошагово, как все же добавлять новости на страницы Facebook.
Идем по ссылке, создаем новое приложение (в правом верхнем углу).
После создания приложения получаем:
AppId
App Secret
Не забываем внизу указать App Domain и Website, соответствующие сайту, с которого будут публиковаться новости.
При успешном выполнении запроса Facebook вернет идентификатор записи, при неудачном строку в формате JSON с ошибкой. Идентификатор мы сохраним, где нам удобно для дальнейшего использования.
Примерный вид сообщения:
Параметры в переменную attachment передаются в формате JSON. Передавать можно не только текстовые данные, но и медиа (картинки, флеш, музыку). Подробнее можно посмотреть тут.
В случаем успеха вернется 1 или true, иначе — строка в формате JSON.
При успешном запросе возвращает ID комментария, при неверном строку в формате JSON. Идентификатор комментария можно использовать для его удаления:
В случаем успеха вернется 1 или true, иначе — строка в формате JSON.
В ответ получаем либо строку формата JSON с данными о комментариях, либо строку с ошибками.
Хочу поделиться опытом автоматического добавления и последующего удалением новостей, а также комментариев к ним на страницах пользователей, групп, событий и фан. страниц Facebook.com.
Для реализации нам необходим PHP с подключенным модулем curl, PHP Facebook SDK ссылка.
Передо мной поставили задачу: из админ. панели сайта добавить новости в соответствующую группу в ВКонтакте и на фан. страницу Facebook.
Разобраться с контактом не составляло труда. Помогла статья эта и эта. Только я столкнулся с таким багом или ограничением: у меня метод wall.post не возвращает post_id, хотя в документации написано, что должен.
Но это тема другой статьи. Сейчас я хочу рассмотреть пошагово, как все же добавлять новости на страницы Facebook.
Создаем приложение на Facebook
Идем по ссылке, создаем новое приложение (в правом верхнем углу).
После создания приложения получаем:
AppId
App Secret
Не забываем внизу указать App Domain и Website, соответствующие сайту, с которого будут публиковаться новости.
Добавляем новость на страницу в Facebook
require '../src/facebook.php';
define('FACEBOOK_APP_ID',"123456"); // идентификатор приложения AppId
define('FACEBOOK_SECRET',"123456"); // секретный ключ App Secret
define('PAGE_ID',"123456"); // идентификатор страницы (пользователя, группы, события)
define('UID',"123456"); // идентификатор страницы или пользователя от имени которого будет опубликована новость
$user = null;
$facebook = new Facebook(array(
'appId' => FACEBOOK_APP_ID,
'secret' => FACEBOOK_SECRET,
'cookie' => true
));
$user = $facebook->getUser(); // Получаем UID залогиненого пользователя, или 0.
/**
* - redirect_uri: URL для редиректа после удачной авторизации
* - scope: определяет доступные действия для подключения
*/
if($user == 0) {
$login_url = $facebook->getLoginUrl($params = array('scope' => 'manage_pages,offline_access,publish_stream, read_stream'));
// перебрасываем пользователя на $login_url
}
$params = array(
'name' => “My title”,
'href' => “http://www.mysite.ru”,
'description' => “Description”
);
$message = “Message”; // сообщение
$attachment = urlencode(json_encode($params)); //
$url = 'https://api.facebook.com/method/stream.publish?message='.$message.'&attachment='.$attachment.'&target_id=’.PAGE_ID.’&uid=’.UID.’&access_token='.$facebook->getAccessToken();
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, "");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($ch, CURLOPT_URL, $url);
$res = curl_exec($ch);
curl_close($ch);
При успешном выполнении запроса Facebook вернет идентификатор записи, при неудачном строку в формате JSON с ошибкой. Идентификатор мы сохраним, где нам удобно для дальнейшего использования.
Примерный вид сообщения:
Параметры в переменную attachment передаются в формате JSON. Передавать можно не только текстовые данные, но и медиа (картинки, флеш, музыку). Подробнее можно посмотреть тут.
Удаление новости
define('POST_ID',"12345"); //идентификатор новости, который мы получили выше
define('UID',"12345"); // идентификатор пользователя, который разместил новость
$url = 'https://api.facebook.com/method/stream.remove?post_id='.POST_ID.'&uid='.UID.'&access_token='.$facebook->getAccessToken();
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, "");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($ch, CURLOPT_URL, $url);
$res = curl_exec($ch);
curl_close($ch);
В случаем успеха вернется 1 или true, иначе — строка в формате JSON.
Добавляем комментарии к новости
define('POST_ID',"12345"); // идентификатор новости
$url = 'https://graph.facebook.com/'.POST_ID.'/comments';
$attachment = array(
'access_token' => $facebook->getAccessToken(),
'message' => "Hi",
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($ch);
curl_close ($ch);
При успешном запросе возвращает ID комментария, при неверном строку в формате JSON. Идентификатор комментария можно использовать для его удаления:
define('COMMENT_ID',"12345"); // идентификатор комментария
define(UID',"12345"); // идентификатор пользователя, оставившего коммент
$url = 'https://api.facebook.com/method/stream.removeComment?comment_id='.COMMENT_ID.'&uid=123&access_token='. $facebook->getAccessToken()
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, "");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($ch, CURLOPT_URL, $url);
$res = curl_exec($ch);
curl_close ($ch);
В случаем успеха вернется 1 или true, иначе — строка в формате JSON.
Просмотр всех комментариев к новости
//выводим комменарии к статье
$url = 'https://graph.facebook.com/'.POST_ID.'?access_token='.$facebook->getAccessToken();
$ch = curl_init();
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, "");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
curl_close($ch);
В ответ получаем либо строку формата JSON с данными о комментариях, либо строку с ошибками.
Используемые материалы
03.10.2011 12:45+0400