Крок 1. Додавання нового додатка
Для початку нам необхідно додати новий сайт в нашу обліковий запис сервісу Mail.ru. Зробити це можна пройшовши по ось цим посиланням. Для роботи прикладу вам потрібно буде самим зареєструвати новий додаток і ввести власні параметри.
На сторінці, в першу чергу, погоджуємося з правилами розміщення сайтів. Далі заповнюємо форму:
Далі натискаємо на кнопку "Продовжити" і переходимо до наступного кроку. На третьому кроці необхідно завантажити файл receiver.html, помістити його в каталог вашого проекту і дати Mail.ru можливість перевірити існування даного файлу. Оскільки наш приклад призначений для роботи на локальному сервері, то ми цього робити не будемо. Просто натискаємо кнопку "Продовжити", і на наступній сторінці "Пропустити". Якщо ж ви створюєте приклад для додатка працюючого на якомусь реальному сервері, то спочатку пройдіть процедуру перевірки наявності файлу receiver.html, інакше функціональність вашого прикладу може бути обмежена.
Отже, після успішного додавання сайту в сервіс Mail.ru, нам повинно видасться наступне повідомлення зі спеціальними параметрами:
Звідси ми можемо витягти такі параметри, як `ID` додатки,` Приватний ключ` і`Секретний ключ`. Запишемо їх у спеціальні змінні у файлі index.php:
Крок 2. Генерація посилання для аутентифікації
Тут же, в черговий раз, я скористався функцією urldecode. Якщо цього не зробити, то в згенерованої посиланням можуть з'явитися закодовані символи слешів, знаків двокрапки і так далі:
Якщо ж ми пропустимо цей рядок через функцію urldecode, то отримаємо:
Крок 3. Отримання токена
Починати процедуру аутентифікації ми можемо в тому випадку, якщо до нас прийшов параметр code. Він нам потрібен для того, щоб отримати спеціальний токен доступу, за допомогою якого, в подальшому, ми дістанемо інформацію про користувача.
В першу чергу, знову сформуємо параметри для цього запиту. Нам буде потрібно передати параметри: `client_id` - id додатки; `Client_secret` - секретний ключ; `Grand_type`, що дорівнює значенню" authorization_code "- код активації; `Code` - url параметр, який прийшов від Mail.ru; `Redirect_uri` - сторінка, на яку буде повернений користувач:
Для того щоб ми далі могли працювати з даними параметрами, декодуємо JSON рядок за допомогою функції json_decode і поміщаємо дані в масив, передавши в якості другого аргументу true.
Крок 4. Отримання інформації про користувача
Тепер, коли у нас є параметри access_token, ми можемо зробити запит до Mail.ru API і отримати інформацію про користувача. Перед тим, як ми підготуємо масив з параметрами, які в наслідку перетворимо на фрагмент url рядки, нам потрібно сформувати спеціальну `подпісь` запиту $ sign за допомогою хеша md5;
У параметр method записуємо назву методу Mail.ru API, який поверне нам інформацію про користувача; параметру secure ставимо 1 - це потрібно для безпеки. Далі в параметр app_id передаємо id нашого застосування; в session_key записуємо access_token - токен доступу, який ми дістали по POST запиту в попередньому кроці і звичайно ж підпис запиту (sig).
В результаті, якщо все було зроблено успішно, то отримаємо JSON відповідь приблизно такого вигляду:
Далі перетворимо JSON відповідь в масив і перевіримо наявність в ньому нульового елемента з ключем uid. Якщо такий елемент є, ізвлечём його із загального масиву $ userInfo за допомогою методу array_shift:
Крок 5. Витяг інформації про користувача
Тепер витягувати інформацію про користувача ми можемо з масиву, що зберігається в змінній $ userInfo, по ключам, які ви можете знайти в лістингу JSON відповіді останнього GET запиту. Я виведу лише кілька значень:
Крок 6. Що ж далі?
Після цього, все що нам залишилося зробити, так це створити сесію і помістити в неї інформацію про наш користувача.
На сторінці виходу з системи просто видаляємо сесію за допомогою функції unset.
Ще один рецепт створення сторонньої аутентификацией у вас в скарбничці.
Справа в тому, що процес роботи з БД для всіх прикладів буде однаковий, а ось в аутентифікації через різні соц мережі є свої характерні деталі.
5 останніх уроків рубрики "PHP"
Коли мова йде про безпеку веб-сайту, то фраза "фільтруйте все, екрануйте все" завжди буде актуальна. Сьогодні поговоримо про фільтрації даних.
Expressive 2 підтримує можливість підключення інших ZF компонент за спеціальною схемою. Не всім подобається це рішення. У цій статті ми розповімо як поліпшили процес підключення декількох модулів.
Припустимо, що вам необхідно відправити якусь інформацію в Google Analytics з серверного скрипта. Як це зробити. Відповідь в цій замітці.
Підбірка з декількох видів PHP пісочниць. На деяких ви в режимі online зможете потестить свій код, але є так само рішення, які можна впровадити на свій сайт.
Scar_zadrot
Акі Іргашев
Шановні. Адміністратор. Тут на сайті ruseller.com ви зробили піктограму що б знати з чого аунтіфіціровался користувач, як це реалізували. І будь ласка напишіть статтю про аутентифікації через Google, facebook, twitter
stas.protasevich
0line
Виявилося, що яндекс ігнор переданий параметр на засланні редиректу. Довелося прописати йому в настройках в ручну, і все запрацювало. P.S. Дякую за уроки. Дуже цінна інфа!
За рахунок отримання інформації відразу по двох каналах (зір і слух) ефективність навчання значно перевершує навчання по книгах. А домашні завдання і онлайн-тести дозволять вам постійно думати на мові, що вивчається і відразу перевіряти свої знання!
Якщо ви давно хочете як слід вивчити HTML, то у мене для Вас є чудова новина!
Якщо ви вже вивчили HTML і хочете рухатися далі, то наступним кроком буде вивчення технології CSS.
Якщо ви хочете розібратися з поняттями домену і хостингу, навчитися створювати бази даних, закачувати файли сайту на сервер по FTP, створювати піддомени, налаштовувати поштові скриньки для свого сайту і стежити за його відвідуваністю, то цей курс створений спеціально для вас!