Огляд facebook api

Перед тим як розглядати способи взаємодії з будь-якою системою, потрібно представляти, як вона влаштована зсередини. В якості операційної системи творці Facebook обрали Linux, основна частина коду написана на PHP (який засобами HipHop компілюється в c ++). База даних MySQL використовується як сховище пар ключ-значення, ніяких складних структур і join запитів. Для кешування застосовується memcached.

Для уявлення масштабів системи слід звернути увагу на наступну статистику:

Всі об'єкти в графі можуть бути пов'язані між собою відносинами, перевірити наявність зв'язку з цим можна в такий спосіб:

Основні об'єкти Facebook:

Над усіма описаними вище об'єктами дозволені певні операції. Основна операція - отримати об'єкт, тому розглянемо деякі можливості API, які зроблять це більш зручним:

Selection - дозволяє точно вказати, які поля об'єкта повертати:

Також є можливість запитувати декілька об'єктів одночасно:

Для зручності введений спеціальний ідентифікатор - me:

Існує універсальний спосіб показати картинку будь-якого об'єкта:

Природно, цей підхід працює і з профілями, подіями, групами та ін. Об'єктами графа. Додатковий синтаксичний цукор в можливих параметрах: square (50x50), small (50 пікселів в ширину, висота підбирається автоматично), large (200 пікселів в ширину, висота варіюється). Приклад запиту:

Природно, що інформації більше, ніж ми можемо прийняти за один запит, тому розглянемо механізм посторінкового отримання даних:

Існує можливість задати формат повертається дати:

Закінчити короткий огляд graph API слід на найцікавішою можливості - Real-Time updates. Наявність цього пункту показує всю серйозність, з якою Facebook відноситься до інтеграції з іншими додатками. Оновлення в режимі реального часу дозволяють розробникам сторонніх сайтів отримувати інформацію про деякі зміни їх користувачів. Facebook сам повідомляє про те, що користувач написав повідомлення в новинну стрічку, додав одного або натиснув кнопку like. Цей пункт розробників від необхідності періодично опитувати API про такі зміни. Деякі деталі цього механізму:

  • Real-time - це може бути кілька хвилин;
  • він поширюється тільки на об'єкти user, permissions, page (для додатків);
  • вимагає підписки, підтримки особливого механізму взаімодейстівія;
  • приймати сторонній сайт повинен як GET (для перевірки підписки) так і POST (для даних) запити.

Зберігаються підписки в такому вигляді:

Механізм взаємодії Faceook і підписаного на поновлення стороннього сайту:

  • Спочатку facebook відправляє GET запит на сервер сайту з трьома параметрами: hub.mode (тут буде передана рядок subscribe), hub.challenge (довільна рядок) і hub.verify_token (токен сайту, який був відправлений на Facebook в запиті на підписку).
  • Спочатку сайт повинен перевірити, що посланий і прийнятий token збігаються.
  • Потім відіслати довільну рядок назад (цей крок дозволяє уникнути випадку, коли Facebook може бути використаний для DDoS атаки на сервер сайту).
  • Тільки після вищеописаних кроків, facebook надсилає сайту POST запитом ідентифікатор об'єкта, і список полів, які змінені.

Нові дані доведеться отримувати окремим запитом.

Для аутентифікації Facebook використовує протокол OAuth 2.0, суть якого в трьох кроках:

Після проходження цих трьох кроків сайт отримує "user access token", який дозволяє робити з даними користувача все, що він дозволив.

Аутентифікація, серверна сторона:

Якщо аутентифікація успішно завершена, сайт нарешті отримує accesstoken, разом з яким передається ще один параметр - expires, час у секундах, яке цей token буде працювати.

Є можливість запросити дозвіл на offline_access, тоді token буде діяти вічно.

Виконуються схожі дії, підсумками яких стане

Розроблені Facebook модулі легко вбудовуються в сторонній сайт, вони дозволяють інтегрувати всі найпоширеніші функції:

В даному розділі буде розглянуто основний інструментарій, який можна використовувати для розробки під facebook api.

Дозволяє парсити fbml теги з DOM'а


Додатковий APIs - FQL, Old REST API

Також є "вбудовані функції" now (), strlen (), substr () і strpos ().

Або більш складний - витягаємо інформацію про друзів

Версія для друку

Схожі статті