24
Авг

Публикация на страницу Facebook через PHP

Инструкция как получить бессрочный access token, запросы к Graph API, отправка сообщения на стену FB.

Создаем приложение на странице https://developers.facebook.com/apps/

Важно в разделе «проверка приложения» сделать приложение доступным для всех, иначе публикации не будут видны пользователям.

Получаем бессрочный access_token

1. Переходим на https://developers.facebook.com/tools/explorer/

2. В выпадающем меню «Приложение» выбираем свое приложение.

3. Ниже в меню «Get Token» выбираем «Get Page Access Token», появится окно подтверждения прав, жмем «ок».

4. В этом же меню появится новый пункт с названием страницы (Маркеры доступа на Страницу), выбираем его.

5. После чего появится новый пункт «Request publish_pages», жмем его и опять подтверждаем права.

6. Ниже кнопка «Submit».

7. В правой части  в «Search for a field» добавляем access_token и снова «Submit». В ответе будет ID страницы и токен.

8. Копируем полученный токен. У него время действия всего час. Страницу не закрываем!

9. Переходим на https://developers.facebook.com/tools/debug/accesstoken и вставляем скопированный токен в поле, жмем «Debug», ниже жмем кнопку «Extend Access Token» и вводим пароль, после этого появится новый токен сроком уже на 60 дней, копируем его.

10. Возвращаемся на https://developers.facebook.com/tools/explorer/ и вставляем скопированный токен в поле «Маркер доступа», жмем «Submit». В ответе будет новый токен без ограничений по времени, его будем использовать при запросах к API.

Метод feed

Публикация ссылки на страницу сайта.

<code class="php hljs">$page_id = <span class="hljs-string">'ID_СТРАНИЦЫ'</span>;

$data = <span class="hljs-keyword">array</span>(
    <span class="hljs-string">'access_token'</span> =&gt; <span class="hljs-string">'ACCESS_TOKEN'</span>,
    <span class="hljs-string">'message'</span>      =&gt; <span class="hljs-string">'Hello, world!'</span>,
    <span class="hljs-string">'link'</span>         =&gt; <span class="hljs-string">'http://snipp.ru/'</span>,
    <span class="hljs-string">'name'</span>         =&gt; <span class="hljs-string">'Анкор'</span>,
    <span class="hljs-string">'picture'</span>      =&gt; <span class="hljs-string">'http://snipp.ru/logo.png'</span>
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, <span class="hljs-string">'https://graph.facebook.com/'</span> . $page_id . <span class="hljs-string">'/feed'</span>);
curl_setopt($ch, CURLOPT_POST, <span class="hljs-number">1</span>);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, <span class="hljs-number">1</span>);
$res = curl_exec($ch);
curl_close($ch);

$res = json_decode($res, <span class="hljs-keyword">true</span>);
var_dump($res);

Метод photos

Публикация изображения с текстом.

<code class="php hljs">$page_id = <span class="hljs-string">'ID_СТРАНИЦЫ'</span>;

$data = <span class="hljs-keyword">array</span>(
    <span class="hljs-string">'access_token'</span> =&gt; <span class="hljs-string">'ACCESS_TOKEN'</span>,
    <span class="hljs-string">'caption'</span>      =&gt; <span class="hljs-string">'Hello, world!'</span>,
    <span class="hljs-string">'url'</span>          =&gt; <span class="hljs-string">'http://snipp.ru/logo.png'</span>
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, <span class="hljs-string">'https://graph.facebook.com/'</span> . $page_id . <span class="hljs-string">'/photos'</span>);
curl_setopt($ch, CURLOPT_POST, <span class="hljs-number">1</span>);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, <span class="hljs-number">1</span>);
$res = curl_exec($ch);
curl_close($ch);

$res = json_decode($res, <span class="hljs-keyword">true</span>);
var_dump($res);