Авторизація на сайті за допомогою facebook (php sdk)

Інформація в цій статті застаріла і є неактуальною.

Крок перший: установка

Створюємо Базу даних.

Давайте почнемо з створення таблиці в БД:

Створюємо додаток в Facebook.

Авторизація на сайті за допомогою facebook (php sdk)
Отримуємо API ключ нової програми

Авторизація на сайті за допомогою facebook (php sdk)
Вказуємо Canvas URL і Post-Authorize Redirect URL

У полях розділу «З'єднання», заповніть поле Connect URL - його значення повинно бути таким же, як в уже заповнених полях, а в поле Base Domain потрібно вказати localhost.com.

Авторизація на сайті за допомогою facebook (php sdk)
Вказуємо Connect URL

Після збереження налаштувань програми, потрібно завантажити бібліотеку PHP SDK і розпакувати файл facebook.php з архіву в нову директорію в кореневій папці сайту.

Збережемо цей код у файлі з ім'ям login_facebook.php в кореневій папці сайту і відкриємо його в браузері. Якщо все зроблено правильно, то ви будете перенаправлені на facebook.com і побачите форму для запиту прав доступу додатки до вашого профілю.

Авторизація на сайті за допомогою facebook (php sdk)
Запит прав доступу додатки до вашого профілю

Цього могло не статися по ряду причин: перший варіант розвитку подій - ви були перенаправлені на facebook.com. але побачили сторінку з помилкою. Рішення може бути наступне: спробуйте перевірити дані в налаштуваннях програми - чи всі поля заповнені. Другий варіант розвитку подій: ви помітили помилку приблизно такого змісту: «Uncaught CurlException: 60: SSL certificate problem, verify that the CA cert is OK. ». Ймовірно, це сталося через невірні налаштувань CURL. Щоб виправити цю проблему відкрийте файл base_facebook.php з бібліотеки PHP SDK і знайдіть в ньому метод makeRequest ().

У ньому, відразу після рядка:

Додайте наступний рядок:

Це, звичайно, невірний підхід: додавати свій код у файли бібліотеки, але іншого способу розв'язання цієї проблеми немає.

Давайте продовжимо з реєстрацією користувача: я розмістив код прикладу всередині блоку try / catch - зроблено це для запобігання виникнення помилки, в разі застарілих значень ключів в поточному URL.

Зараз будемо проводити операції з базою даних. Зверніть увагу, що я не буду здійснювати обробку даних перед збереженням в БД, для того, щоб скоротити обсяг коду в прикладах. Будь ласка, майте це на увазі і обов'язково проводите обробку даних, що надійшли від користувача, перед збереженням в БД.

Створюємо підключення до бази даних:

Вважаємо, що в нашому прикладі сесія активна.

Хорошим рішенням при створенні таблиці в БД буде привласнити полю oauth_provider тип ENUM.

Зараз в змінній $ result - знаходиться масив з даними, отриманими з БД. Давайте збережемо деякі з них в сесії. Додайте наступний код першим рядком вашого скрипта:

Після умовного блоку з перевіркою if (empty ($ result)) додайте наступний код:

Для відображення імені користувача додаємо в скрипт наступні рядки:

Крок четвертий: використовуємо додаткові можливості

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

FQL або Graph API

На мою думку, FQL - більш гнучкий, ніж Graph API і з ним простіше працювати. На щастя, Facebook все ще дозволяє розробникам використовувати його, не дивлячись на те, що в новій бібліотеці є невеликі зміни.

Дізнатися про всі полях, підтримуваних методом users.getInfo ()

Той же самий результат можна отримати використовуючи FQL:

На цій сторінці представлений повний список таблиць, доступ до яких можливий за допомогою FQL. а також доступні поля з даними про користувача.

розширені права

Ви можете ознайомитися з повним списком прав. Зверніть увагу, що можливо вказати 2 url для повернення назад на ваш сайт: один - в разі якщо користувач надасть додатком необхідні права, а інший - в зворотному випадку. Для цього використовуйте ключі масиву next і cansel_url відповідно.

Авторизація на сайті за допомогою facebook (php sdk)
Запит додатком розширених прав

Перевірка наявності у додатки розширених прав.

У будь-який момент користувач може відключити розширені права у додатки. Тому програма має перевірять наявність необхідних прав перед тим як проводити будь-які дії, особливо якщо дії пов'язані з публікацією чого-небудь. Для перевірки будемо використовувати REST API.

На даний момент REST API вважається застарілим, тому метод users.hasAppPermission підтримує перевірку неповного списку прав.

Публікуємо повідомлення на «стіні» користувача.

По суті, ми зробили виклик API // Feed методом POST (другий параметр методу facebook :: api), передавши текст повідомлення (третій параметр в методі facebook :: api). Третім параметром (ім'ям ключа масиву) може бути не тільки значення "message", а також "link", "picture", "caption", "description".

Публікуємо повідомлення на стіні користувача

Додаткова інформація, яка може стати в нагоді:

  • Користувач зможе видалити додаток на сторінці налаштувань додатків. натиснувши на [×] праворуч від назви програми.
  • На сторінці з параметрами додатків користувач може видаляти надані з додатком права окремо

висновок

Переклад - Земсков Матвій

Інформація в цій статті застаріла і є неактуальною.

Пропоную наступні послуги:

  • Верстка шаблону сайту з дизайн-макету для CMS «1С-Бітрікс Управління сайтом» і CMS "Joomla"
  • Створення форм різної складності (зворотний зв'язок, анкети і тп) для зазначених CMS
  • Налагодження та кастомизация компонентів і модулів для зазначених CMS
  • Доопрацювання модулів і компонентів для зазначених CMS, додавання нестандартного функціонала
  • Розробка Лендінзі (landing-pages)

За все про надання через форму зворотного зв'язку

Пропоную Вашій увазі:

Схожі статті