Facebook + Drupal — відправлення запрошення друзям

05.11.2014
Facebook + Drupal
Автор:

Ми вже піднімали тему публікації на публічних сторінках у Facebook. Тепер ми хочемо розказати про відправку запрошення друзям, використовуючи Facebook SDK for JavaScript.

У facebook js sdk вже є готове рішення для виводу попапу з друзями на фейсбуці — це Requests Dialog. Він може бути використаний, щоб відправити запит безпосередньо від однієї людини до іншої або відобразити форму для вибору декількох друзів, що дозволяє відправнику вибрати кілька одержувачів запрошень.

Результатом виконання буде ось такий попап:

Для того, щоб таке вікно з’явилося у вас на сайті, потрібно створити свій додаток у фейсбуці. В полі Canvas URL вказуємо сторінку, з якої буде відправлятися запит і виводитись попап для запрошення друзів, а в полі Secure Canvas URL — сторінку, яку бачать користувачі, котрі отримають запрошення (вона обов'язково повинна підтримувати https протокол).

Почнемо з опису двох сторінок (конфігурації і сторінки на якій буде сам попап).

/**
 *  Implements hook_menu().
 */
function idevels_facebook_menu() {
  $items = array();

  $items['admin/config/system/facebook'] = array(
    'title'            => 'App configuration',
    'page callback'    => 'drupal_get_form',
    'page arguments'   => array('idevels_facebook_config'),
    'access arguments' => array('facebook configuration'),
  );
  $items['request'] = array(
    'title'            => 'Facebook request page',
    'access callback'  => TRUE,
    'page callback'    => 'drupal_get_form',
    'page arguments'   => array('idevels_facebook_request_page'),
  );
  return $items;
}

Додаємо права доступу до сторінки конфігурації:

/**
 * Implements hook_permission().
 */
function idevels_facebook_permission() {
  return array(
    'facebook configuration' => array(
      'title'       => t('Access facebook configuration page'),
      'description' => t('View and edit facebook intergration cofiguration'),
    ),
  );
} 

Далі описуємо форму конфігурацій, в якій буде зберігатись App ID і App Secret:

/**
 * Facebook request configuration page.
 */
function idevels_facebook_config($form, &$form_state) {
  $form['idevels_facebook_app'] = array(
    '#type'  => 'fieldset',
    '#title' => t('Facebook app settings'),
  );
  $form['idevels_facebook_app']['idevels_facebook_app_key'] = array(
    '#type'          => 'textfield',
    '#title'         => t('App ID'),
    '#default_value' => variable_get('idevels_facebook_app_key', ''),
    '#required'      => TRUE,
  );
  $form['idevels_facebook_app']['idevels_facebook_app_secret'] = array(
    '#type'          => 'textfield',
    '#title'         => t('App Secret'),
    '#default_value' => variable_get('idevels_facebook_app_secret', ''),
    '#required'      => TRUE,
  );
  return system_settings_form($form);
}

Пишемо код для сторінки, на якій буде попап з запрошенням друзів:

/**
 * Facebook request page.
 */
function idevels_facebook_request_page($form, &$form_state) {
  $id = variable_get('idevels_facebook_app_key', FALSE);
  if ($id) {
    drupal_add_js('http://connect.facebook.net/en_US/all.js', 'external');
    drupal_add_js(drupal_get_path('module', 'idevels_facebook') . '/js/idevels_facebook.js');
    $form['root'] = array(
      '#markup' => '<div id="fb-root"></div>',
    );
    $form['button'] = array(
      '#markup' => l(t('Request'), 'request', array(
        'attributes' => array(
          'class' => array('button'),
          'id' => 'request-facebook',
          'data-appid' => $id
        ),
        'fragment' => ' ')
      ),
    );
  }
  return $form;
}

Обов'язково додаємо дів з fb-root. До нього прив’язується бібліотека фейсбука.

$form['root'] = array(
  '#markup' => '<div id="fb-root"></div>',
);

А тепер додаємо сам скрипт попапа. Для його виведення достатньо лише ініціалізувати додаток і вивести сам попап

Drupal.behaviors.internetDevelsFacebook = {
        attach: function (context, settings) {
          $('#request-facebook').click(function() {
              var id = $(this).attr('data-appid');
              FB.init({
                  appId  : id,
                  status : true,
                  xfbml  : true,
              });
              FB.ui({
                method: 'apprequests',
                message: 'My Great Request'
              }, function(response) {});
          });
        }
    };

Також запрошення можна передавати не тільки друзям, але й іншим користувачам фейсбука, вказавши id потрібних вам людей:

FB.ui({method: 'apprequests',
  message: 'My Great Request',
  to: {user-ids}
  }, requestCallback);
);

Ось і все, функціонал запрошень готовий.

Детальніше про  Facebook SDK for JavaScript можна дізнатися тут.

Голосів: 1 Рейтинг: 5

Також по темі

1

Друпал-розробники зі стажем не уявляють роботи без утіліти Drush (Drupal shell), адже з її допомогою більшість рутинних дій в друпалі випоконуються...

2

Трапляються ситуації коли потрібно використовувати обидва інтернет-протоколи HTTP та...

3

Сьогодні iPhone та iPad - далі iГаджети - перестали бути для нас у дивовижу, і все частіше розробники наштовхуються на проблему реалізації функціоналу під ці пристрої.

4

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

5

Queue API - спеціальний функціонал в Drupal, який дозволяє формувати чергу і контролювати виконання трудомістких операцій на сайті. На відміну від Batch API, Queue API...

Subscribe to our blog updates