Библиотека для аутентификации через социальные сети посредством протокола OAuth
Библиотека реализует авторизацию через OAuth 1-й и 2-й версий
Поддерживаемые адаптеры
- Яндекс
- Mail.ru (Мой мир)
- Одноклассники
- Vk.com (ВКонтакте)
- GitHub
Установка и настройка
1. Скопируйте файлы дистрибутива в директорию вашего виртуального сервера. Структура папок дистрибутива соответствует проекту "по умолчанию" ZendFramework.
2. Установите файлы ZendFramework 1.12 в директорию /library/Zend
3. Внесите изменения в файл /application/configs/application.xml в секцию ouath.
Необходимо зарегистрировать свое приложение и получить ключи для авторизации на сайтах подсети и на основании полученных данных сконфигурировать адаптеры. В качестве callback_uri/redirect_url по умолчанию используется адрес вида http(s)://адрес_сайта/callback/идентификатор_сети.
Конфигурация адаптеров
Сеть | Идентификатор | Url регистрации приложения | Подсекция key | Подсекция secret | Подсекция appkey |
---|---|---|---|---|---|
Google+ | Click me | Client ID | Client secret | — | |
Яндекс | yandex | Click me | Id приложения | Пароль приложения | — |
Mail.ru | mailru | Click me | ID | Секретный ключ | — |
VK.com | vk | Click me | ID приложения | Защищенный ключ | — |
Click me | Consumer key | Consumer secret | — | ||
GitHub | github | Click me | Client ID | Client secret | — |
Click me | Ключ API | Секретный ключ | — | ||
Одноклассники | odnoklassniki | Click me | Application ID | Секретный ключ приложения | Публичный ключ приложения |
Click me | App ID/API Key | Секрет приложения | — | ||
Click me | CLIENT ID | CLIENT SECRET | — |
Логика работы приложения
Основным контроллером работы приложения является IndexController, вы можете использовать любой другой контроллер или вообще любой PHP-скрипт. Важно регистрировать в соцсетях правильный callback_uri.
При запроса requestAction происходит формирование Url и передаресация на сервер социальной сети. Пользователь авторизуется на сайте соцсети и разрешает вашему приложению получить свои пользовательские данные. Социальная сеть возвращает пользователя по callback_uri на ваш callbackAction, в котором уже по предоставленным ключам запрашивается информация о пользователе с сервера соцсети. Полученные данные заносятся в сессию и происходит переадресация на indexAction.
Получение данных о пользователе
Данные об аутентифицированном пользователе доступны в контроллере в indexAction в виде массива в объекте пользовательской сессии $this->_session->userinfo и представляют собой следующую структуру:
Array ( [provider] => название сервиса (google, yandex и пр.) [userid] => id пользователя в сервисе [username] => имя пользователя в сервисе [gender] => пол (male,female) (по умолчанию null) [email] => основной email пользователя (если неизвестно, то userid@домен_сервиса) [locale] => локаль пользователя (по умолчанию null) [firstname] => имя пользователя (по умолчанию null) [lastname] => фамилия пользователя (по умолчанию null) [link] => ссылка на профиль пользователя на сервере сервиса (по умолчанию null) [avatar] => адрес аватара на сервере сервиса (по умолчанию null) )
Работа с адаптерами напрямую
Пример работы с конкретным адаптером напрямую из PHP-приложения без использования MVC-компонент ZendFramework приведен в файле public/facebook.php