Із розвитком соціальних мереж замовники все частіше хочуть інтегрувати сайт з Facebook, Twitter, Google+ і т.д. При розробці одного з проектів постала необхідність реалізувати кроспостінг на публічну сторінку Facebook'а. Після ретельного вивчення API Facebook, та аналізу уже розроблених інструментів інтеграції для 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')); } } }
Ось приклад функції яка буде виконувати постінг в FБ. Її можна викликати в hook_node_presave(), hook_node_insert() або в інших функціях залежності від нашої задачі.
- $params - це масив, при допомозі якого передаємо контент для запощування, $params['description'] - опис, $params['picture'] - зображення, $params['name'] - назва посту і $params['link'] - посилання.
- _fb_api_init() - функція модуля fb для перевірки чи залогіняний користувач в FB, також вона створює обєкт FACEBOOK.
- FB_PAGE_ID - id публічної сторінки.
- $page_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?response_type=token&client_id=APP_ID&redirect_uri=REDIRECT_URI&scope=manage_pages,create_note
APP_ID - id додатку,
REDIRECT_URI - налаштовується в настройках додатку.