Новости

Авторизація на сайті через Facebook

  1. Створюємо та налаштовуємо додаток Facebook
  2. Пишемо PHP код для авторизації через Facebook

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

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

Створюємо та налаштовуємо додаток Facebook

Думаю зрозуміло - для того щоб взаємодіяти з API соціальної мережі нам буде потрібно створити додаток і його налаштувати особливим образам. У Facebook всі ваші програми знаходяться за цією адресою - додатки Facebook. При першому відвідуванні даній сторінці ви нічого крім великої зеленої кнопки «Create a New App» не знайдете, по ній і натискаємо.

При першому відвідуванні даній сторінці ви нічого крім великої зеленої кнопки «Create a New App» не знайдете, по ній і натискаємо

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

Другий параметр не обов'язковий, ну і якщо ви помилилися, але вже створили додаток, то всі параметри можна буде змінити в подальшому

Далі ми потрапляємо на головну сторінку налаштувань програми. Важливий момент - це те, що додаток спочатку вимкнено (це можна визначити за індикатором стану). Для роботи скрипта нам буде потрібно використовувати два параметра: App ID (індіфікатор додатки) і App Secret (секретний ключ додатки).

Для роботи скрипта нам буде потрібно використовувати два параметра: App ID (індіфікатор додатки) і App Secret (секретний ключ додатки)

Продовжуємо налаштовувати додаток і переходимо на сторінку «Settings». Тут вказуємо параметри: App Domains (базовий домен) і Contact Email (контактна пошта). Без другого параметра не вийти включити додаток авторизації. Далі натискаємо на кнопку «Add Platform» і вибираємо вебсайт, зберігаємо зміни.

Далі натискаємо на кнопку «Add Platform» і вибираємо вебсайт, зберігаємо зміни

Нам залишилося тільки включити додаток. Для це переходимо на сторінку «Status & Review» і переводимо тумблер в стан «Yes».

Для це переходимо на сторінку «Status & Review» і переводимо тумблер в стан «Yes»

Ось ми і закінчили створення і налаштування додатку. Якщо порівнювати з «ВКонтакте», то в Facebook цей процес займає трохи більше часу.

Пишемо PHP код для авторизації через Facebook

Принцип і логіку написання скрипта я залишу такий же, як і в написаній раніше статті - Аутентифікація через «ВКонтакте» . У ній я детально описував клас авторизації і методи, які він в себе включає. Тут же я просто додам код з короткими поясненнями, щоб не повторяться.

Власне клас авторизації через Facebook:

class FBAuth {public $ settings = array (); public $ auth_status = false; public $ user_info = array (); public function __construct ($ settings) {if (isset ($ settings [ "client_id"], $ settings [ "client_secret"], $ settings [ "redirect_uri"])) {$ this-> settings = $ settings; }} Public function auth ($ code) {if ($ code && $ this-> settings) {$ query = urldecode (http_build_query (array ( "client_id" => $ this-> settings [ "client_id"], "redirect_uri" => $ this-> settings [ "redirect_uri"], "client_secret" => $ this-> settings [ "client_secret"], "code" => $ code))); $ Token = json_decode (file_get_contents ( "https://graph.facebook.com/oauth/access_token?". $ Query), true); if (isset ($ token [ "access_token"])) {$ query = urldecode (http_build_query (array ( "access_token" => $ token [ "access_token"], "fields" => "id, first_name, last_name, picture. width (120) .height (120) "))); $ This-> user_info = json_decode (file_get_contents ( "https://graph.facebook.com/me?". $ Query), true); if (isset ($ this-> user_info [ "id"])) {$ this-> auth_status = true; return true; }}} Return false; } Public function get_link () {if ($ this-> settings) {$ query = urldecode (http_build_query (array ( "client_id" => $ this-> settings [ "client_id"], "redirect_uri" => $ this-> settings [ "redirect_uri"], "response_type" => "code"))); return "https://www.facebook.com/dialog/oauth?".$query; } Return false; }}

Даний клас формує посилання для авторизації за допомогою методу get_link (). Користувач, натиснувши на неї відправитися на мандрівницю Facebook, де йому буде потрібно дозволити програмі отримувати дані по його профілю. Після того, як відвідувач це дозволить, його перенаправить назад до нас сайт з GET параметром code. За допомогою методу auth () ми витягуємо потрібні дані (Id, ім'я, прізвище і аватарку). Відносно автаркії в Facebook досить зручно зробили те, що можна задати розміри бажаної картинки. Функція повертає: при вдало результаті - true, при іншому - false.

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

require_once ( "FBAuth.php"); $ Fb = new FBAuth (array ( "client_id" => "ID_пріложенія", "client_secret" => "защіщенний_ключ", "redirect_uri" => "адрес_сайта")); if (isset ($ _ GET [ "code"])) {if ($ fb-> auth ($ _ GET [ "code"])) {// Робимо свої справи}}

Відловив GET параметр, ми намагаємося авторизуватися і, якщо все успішно, вже працюємо безпосередньо з базою даних (якщо користувача немає - додаємо, або оновлюємо деякі параметри). У нашому випадку, для наочності, просто виведемо його дані з профілю:

if ($ fb-> auth_status) {echo ( "Соціальний ID користувача:". $ fb-> user_info [ "id"]); echo ( "<br />"); echo ( "Ім'я користувача:". $ fb-> user_info [ "first_name"]); echo ( "<br />"); echo ( "Прізвище користувача:". $ fb-> user_info [ "last_name"]); echo ( "<br />"); echo ( "<img src = '". $ fb-> user_info [ "picture"] [ "data"] [ "url"]. "' alt = 'image' />"); } Else {echo ( "<a href='".$fb-> get_link ()." '> Вхід </a> "); }

Com/oauth/access_token?
Com/me?
Com/dialog/oauth?

Уважаемые партнеры, если Вас заинтересовала наша продукция, мы готовы с Вами сотрудничать. Вам необходимо заполнить эту форму и отправить нам. Наши менеджеры в оперативном режиме обработают Вашу заявку, свяжутся с Вами и ответят на все интересующее Вас вопросы.

Или позвоните нам по телефонам: (048) 823-25-64

Организация (обязательно) *

Адрес доставки

Объем

Как с вами связаться:

Имя

Телефон (обязательно) *

Мобильный телефон

Ваш E-Mail

Дополнительная информация: