Extension:SocialLogin/SocialLoginPlugin/ru

Принцип работы протокола OAuth 2.0
Протокол OAuth 2.0 — это протокол взаимодействия клиентского приложения, пользователя и сервера. Основная последовательность взаимодействия этих сущностей представлена на диаграмме справа.

User flow
Работу пользователя с протоколом OAuth 2.0 можно представить в виде последовательности следующих шагов:
 * 1) Переадресация пользователя на страницу предоставления прав клиентскому приложению на указанные права.
 * 2) Пользователь авторизирует клиентское приложения и разрешает использование тех или иных личных данных.
 * 3) После авторизации клиентское приложение переадресовывает пользователя на предустановленную страницу, при этом происходит передача параметра access_token, который используется для дальнейшего взаимодействия с сервером.

Server flow
Для взаимодействия стороннего сервера с клиентским приложением и сервером OAuth эта последовательность преобретает другой вид:
 * 1) Переадресация пользователя на страницу предоставления прав клиентскому приложению на указанные права.
 * 2) Пользователь авторизирует клиентское приложения и разрешает использование тех или иных личных данных.
 * 3) После авторизации клиентское приложение переадресовывает пользователя на предустановленную страницу, при этом происходит передача параметра code, который используется для получения параметра access_token.
 * 4) Сторонний сервер отправляет запрос серверу OAuth, передавая параметр code, а в ответ получает параметр access_token, который используется для дальнейшего взаимодействия с сервером.

Написание собственного плагина
Для того чтобы создать собственный плагин взаимодействия с сервером OAuth 2.0 достаточно реализовать интерфейс SocialLoginPlugin. Интерфейс имеет следующие методы, которые должны быть переопределены в реализуемом классе:

Метод login
Метод  принимает единственный параметр   и используется для получения параметра access_token и других сведений о пользователе. Данный метод должен вернуть  в случае если авторизация не удалась или, если   был валидным, массив вида: Здесь: В теле метода необходимо присвоить: Здесь:
 * id — уникальный идентификатор пользователя на сервере OAuth (часто передаётся вместе с ответом от сервера);
 * service — уникальный идентификатор сервера OAuth (рекомендуется использовать имя сайта);
 * profile — строка, образованная конкатенацией параметров id и service;
 * name — предлагаемое имя пользователя для отображения в форме регистрации (рекомендуется использовать метод SocialLogin::generateName, который на входе ожидает массив текстовых значений — вариантов возможных имён пользователя на русском или английском языке);
 * email — необязательный параметр, email пользователя, необходим для отображения в форме регистрации;
 * realname — настоящее имя пользователя.
 * $access_token — access_token, который вернул сервер OAuth в ответ на валидацию параметра.

Метод check
Метод  необходим для повторного подтверждения личности пользователя в случае если после авторизации на сервере OAuth оказалось, что нет локального пользователя, который связан с аккаунтом сервера OAuth. Метод принимает единственный параметр — уникальный идентификатор пользователя, полученный методом. Данный метод должен вернуть  в случае если повторная авторизация не удалась или, если   был валидным, массив вида: Здесь:
 * id — уникальный идентификатор пользователя на сервере OAuth (часто передаётся вместе с ответом от сервера);
 * service — уникальный идентификатор сервера OAuth (рекомендуется использовать имя сайта);
 * profile — строка, образованная конкатенацией параметров id и service;
 * realname — настоящее имя пользователя;
 * access_token — access_token, полученый во время валидации параметра  (можно получить из сессии  )

Метод loginUrl
Метод  не имеет входных параметров и должен вернуть адрес перенаправления пользователя для авторизации в клиентском приложении.