Facebook + Drupal - кросспостинг в публичные страницы

16.01.2013
Share on FacebookShare on TwitterShare on GooglePlusShare on Linkedin
Автор:

С развитием социальных сетей заказчики все чаще хотят интегрировать сайт с Facebook, Twitter, Google+ и т. д. В ходе разработки одного проекта нам понадобилось реализовать кросспостинг с публичной страницей Facebook’а. После тщательного изучения фейсбуковского API а также анализа уже разработанных инструментов интеграции для Drupal, был избран метод, который я опишу в этом посте.
Перво наперво нужно создать публичную страницу. В ходе работы над этим потребуется указать, к какому пользователю она привязана (каждая публичная страница привязана, как минимум, к одному пользователю являющемуся ее админом и имеющему все права в настройках публичной страницы). Затем данный пользователь - через настройки публичной страницы - сможет добавить еще пользователей, получивших соответствующий доступ.

 Создаем приложение в Facebook чтобы "связать"  наш сайт и соцсеть. Далее устанавливаем и настраиваем пакет модулей Drupal for Facebook. Хотя функционал постинга в публичные страницы в пакете модулей и не реализован, тем не менее в нем есть много полезных функций и модулей, которыми можно воспользоваться для выполнения различных задач, касающихся интеграции  Drupal’а с Facebook ‘ом.
/**
 * Auto publish facebook.
 */
function internetdevels_autopublish_facebook($params) {
  if ($fb = _fb_api_init()) {
    try {
      $page_info = $fb->api('/' . FB_PAGE_ID . '?fields=access_token');
      $params['access_token'] = $page_info['access_token'];
      $fb->api('/' . FB_PAGE_ID . '/feed', 'POST', $params);
    }
    catch (FacebookApiException $e) {
      drupal_set_message(t('Not published to Facebook'));
    }
  }
}

Вот пример функции, которой предстоит выполнять постинг в Fb. Ее можно вызвать в hook_node_presave(), hook_node_insert() или в других функциях в зависимости от содержания нашей задачи.

  • Sparams — массив, с помощью которого передаем контент, предназначенный для дальнейшего опубликования, Sparams['description'] — описание, Sparams['picture'] — изображение, Sparams['name'] — имя поста и Sparams['link'] — ссылка.
  • _fb_api_init() — функция модуля Fb для проверки состояния (залогинен ли пользователь в FB), кроме этого создающая объект FACEBOOK.
  • FB_PAGE_ID — id публичной страницы.  
  • Spage_info — получаем токен для того, чтобы автором поста была публичная страница, а не ваша запись фейсбука.

Для автопостинга пользователю нужно:

  • быть админом публичной страницы; для этого производятся соответствующие настройки по ссылке https://www.facebook.com/pages/edit/?id=FB_PAGE_ID&sk=admin
  • он должен быть авторизован в вашем приложении FB; и тут список приложений в которых вы авторизованы https://www.facebook.com/settings?tab=applications
  • Для авторизации в приложении можно использовать ссылку
    https://www.facebook.com/dialog/oauth?client_id=APP_ID&redirect_uri=REDIRECT_URI&scope=manage_pages,create_note

APP_ID — id приложения,
REDIRECT_URI — настраивается в настройках приложения.

Дополнительная информация:
https://developers.facebook.com/docs 
http://www.drupalforfacebook.org

1 vote, Rating: 5
Share on FacebookShare on TwitterShare on GooglePlusShare on Linkedin

Также по теме

1

Опытные друпал-разработчики не представляют своей работы без утилиты Drush (Drupal shell), ведь с её помощью большинство рутинных дейстивий в друпале выполняются намного...

2

Ни для кого не секрет, что Google Analytics (далее - GA) - мощнейший инструмент для сбора данных о действиях...

3

В данной статье будет рассказано о том, как быстро настроить модуль Search API и...

4

Наша компания очень часто использует модуль Panels для построения сайтов. Хоть это решение добавляет немало...

5

Queue API — специальный функционал в Drupal, который позволяет формировать очередь и контролировать выполнение трудоемких операций на сайте. В отличии от Batch API, Queue...

Need a quote? Let's discuss the project

Are you looking for someone to help you with your Drupal Web Development needs? Let’s get in touch and discuss the requirements of your project. We would love to hear from you.

Join the people who have already subscribed!

Want to be aware of important and interesting things happening? We will inform you about new blog posts on Drupal development, design, QA testing and more, as well news about Drupal events.

No charge. Unsubscribe anytime