Мне нужно синхронизировать события с моей CMS на специальную страницу Facebook. Я пытаюсь создать событие для моей созданной страницы, но все равно не получаю результата. Я могу просто создавать события, относящиеся к пользователю, но не к странице. Код использует Facebook PHP-SDK .
$page_id = '31337'; $page = $facebook->api("/{$page_id}"); $event_data = array( 'name' => 'Event: ' . date("H:m:s"), 'start_time' => time() + 60*60, 'end_time' => time() + 60*60*2, 'owner' => $page ); $post = $facebook->api("/{$page_id}/events", 'POST', $event_data);
После выполнения этого фрагмента событие создается, но, как я уже сказал, он принадлежит пользователю, хотя «владелец» в данных данных является страницей. Мое приложение имеет разрешения manage_pages, create_event и publish_stream. Что мне не хватает?
Решение
В документации «OLD REST API» я обнаружил, что «новому графическому API» по-прежнему нужен параметр page_id . Поэтому переменная $ event_data должна выглядеть следующим образом:
$event_data = array( 'name' => 'Event: ' . date("H:m:s"), 'start_time' => time() + 60*60, 'end_time' => time() + 60*60*2, 'page_id' => $page['id] );
«Создает событие от имени пользователя, если приложение имеет активный ключ сеанса для этого пользователя; иначе он создает событие от имени приложения. »- Источник
Отвечает ли это на ваш вопрос?
Вам нужно передать токен доступа на управляемой странице, которую вы можете получить из графика. Facebook.com/me/account (конечно, передавая токен доступа, чтобы получить список страниц фан-страниц, которые вы используете). Вы увидите там список токенов доступа для каждой из ваших страниц поклонников, используйте их для создания событий или публикации на вашем фан-странице.
Интересно – мой опыт в точности противоположный. Я попытался создать событие с параметром page_id и получил ошибку разрешений. Удалил page_id, и он работал нормально. Трюк состоял в том, чтобы использовать токен доступа к приложениям, а не пользовательский.
Перед записью установите access_token на страницу. Убедитесь, что у приложения есть разрешение «manage_pages» для этого.
Как это:
$page = $fbApi->api('/'.<page_id>,'GET',array('fields'=> 'access_token')); $fbApi->setAccessToken($page['access_token']);