Простой пример публикации на фан-странице Facebook через PHP? - PullRequest
42 голосов
/ 19 октября 2011

Я много занимался поиском и нашел устаревшие учебники, которые не работают ...

У меня есть сайт, созданный с помощью PHP, и когда я отправляю конкретную форму в своей административной области, я хочу опубликовать на своей «фан-странице» в Facebook

Нет доступных RSS, поэтому есть ли у вас какой-нибудь пример для прямой публикации на фан-странице Facebook (не на стене пользователя) с помощью php sdk?

Спасибо!

Ответы [ 4 ]

83 голосов
/ 20 октября 2011

Наконец, после множества тестов, все заработало без PHP SDK.Это пошаговое руководство:

1.Получить разрешения и маркер страницы

Перейдите на https://developers.facebook.com/tools/explorer/ и выберите свое приложение из первого выпадающего меню слева.

Нажмите на кнопку «Получить»токен доступа », а в окне« Выбор разрешений »нажмите« Расширенные разрешения », проверьте manage_pages и publish_stream и нажмите синюю кнопку« Получить токен доступа ».

На этом этапе вас могут попроситьпредоставьте приложению разрешения на доступ к вашей учетной записи Facebook, примите.

Далее щелкните в конце текстового поля рядом с раскрывающимся списком «GET» и замените цифры на: me / account, инажмите синюю кнопку рядом с этим текстовым полем.

Вы получите токены для всех своих страниц, включая страницу приложения.Найдите имя вашей страницы в списке, оно будет выглядеть следующим образом: "name": "Имя вашей страницы"

Когда вы найдете свою страницу, скопируйте токен доступа для страницы (будеточень долго), это может выглядеть так: "access_token": "XXXXXXXX" .Также скопируйте идентификатор страницы: " id": "XXXXX" .

Вот и все для этого шага, мы можем начать кодирование сейчас.

2,Публикация на стене вашей страницы через PHP

Во-первых, для этого скрипта вам понадобится сервер, поддерживающий curl.

Мы запускаем документ PHP, определяющий маркер доступа к странице и страницу.идентификатор, который мы получили на 1-м шаге:

<?php
$page_access_token = 'XXXXXXX';
$page_id = 'YYYYYYYY';

После этого мы создаем массив с информацией для публикации на нашей стене:

$data['picture'] = "http://www.example.com/image.jpg";
$data['link'] = "http://www.example.com/";
$data['message'] = "Your message";
$data['caption'] = "Caption";
$data['description'] = "Description";

Вы, конечно, можетеиспользуйте любой другой параметр post, описанный в https://developers.facebook.com/docs/reference/api/post/, и если вам не нужен один или несколько из вышеперечисленных параметров, вы можете просто удалить его.

Ok, на этом этапе мы добавляем в массивтокен доступа:

$data['access_token'] = $page_access_token;

И мы устанавливаем URL нашего поста, чтобы публиковать на нашей странице:

$post_url = 'https://graph.facebook.com/'.$page_id.'/feed';

И последний шаг, мы будем использовать скручивание, чтобы публиковать наше сообщениев нашей странице страницы:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $post_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$return = curl_exec($ch);
curl_close($ch);
?>

После этого мы можем сохранить наш PHP-документ и попытаться его выполнить.Сообщение может появиться на нашей странице в Facebook.

Надеюсь, этот код поможет другим людям с такой же проблемой!

4 голосов
/ 01 марта 2016

Тестировать токены можно с помощью Отладчика токенов Facebook Access

Рабочее решение для API v.2.5

  1. Получить codeдля app_id как параметр response_uri

https://www.facebook.com/dialog/oauth?client_id=".$app_id."&redirect_uri=".$response_uri."&response_type=code&scope=manage_pages,publish_pages

Получите access_token на основе code, app_id и app_secret в результате response_uri

https://graph.facebook.com/oauth/access_token?grant_type=authorization_code&client_id=".$app_id."&client_secret=".$app_secret."&code=".$code."&redirect_uri=".$response_uri

Получить никогда не истекает page_access_token для page_id на основе access_token

https://graph.facebook.com/v2.5/".$page_id."?fields=access_token&access_token=".$access_token

2 голосов
/ 09 сентября 2015

Как дополнение к ответу nmarti.Действительно для API v.2.4.

Если вы не хотите заходить на консоль API Facebook, скорее выполняйте вызовы API, есть некоторые инструкции.

Прежде всего, вам нужен FacebookПользователь, являющийся администратором на странице, которую вы хотите опубликовать, также должен создать приложение Facebook, чтобы продолжить.

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

https://www.facebook.com/dialog/oauth?client_id=%app-id%&redirect_uri=%your-site-url%&response_type=token&scope=manage_pages,publish_pages

В ответ вы должны получить% user-token%, сохранить его, вам понадобится на следующем шаге.

Подробнее

Попросите токен с долгоживущим статусом:

https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id=%app-id%&client_secret=%app-secret%&fb_exchange_token=%user-token%

Теперь у вас будет% долгоживущий токен%, необходимый для долгоживущегомаркер страницы.

Подробнее

Теперь, получите список своих страниц в Facebook,

https://graph.facebook.com/v2.4/%page-admin-user-id%/accounts/?access_token=%long-lived-token%

Найдите в списке свою страницу и токен страницы, сейчасВы можете продолжить публикацию на странице, используя пример nmarti.

Также Facebook сообщает:

Полученный токен доступа к странице не будет иметь никакого срока действия.

Подробнее

0 голосов
/ 19 октября 2011

Вот ресурс, который вы ищете . Прокрутите вниз до Page Login и прочитайте оттуда. Вы должны получить токен доступа для своей страницы, а затем использовать этот токен при публикации. Это предполагает, что вы хотите, чтобы ваше сообщение отображалось "со страницы". IE - размещение, как если бы вы были страницей.

фактический вызов графа API для создания объекта записи и как это сделать, можно найти по этому URL в документации на Facebook.

...