Авторизацию по протоколу Oauth 2.0
Есть 2 кабинета.
Нужно, чтоб при входе в одни кабинет (на одном сайте) авторизировался в другом кабинете (на другом сайте)
Это нужно сделать для WP
Авторизация работает по протоколу Oauth 2.0 (аналогично фэйсбуку и ряду других сервисов) с некоторыми расширенными возможностями.
Разрабатывать можно сразу на рабочем сервере, поскольку здесь все данные ничего не меняют.
http://DOMAIN/ - домен работающей системы. дальше ссылки будут на него
Возможно реализовать две схемы авторизации
1) как фэйсбук - сделать ссылку "Войти через систему". Здесь все по протоколу Oauth 2.0
Ссылка для авторизации:
http://DOMAIN/do.control/oauth/authorize?client_id=%s&redirect_uri=%s
в параметре redirect_uri передается ссылку, куда надо перебросить пользователя (%s)
client_id - номер клиента. зависит от сервиса. Сервис должен быть создан в системе.
продолжение описания после второй схемы авторизации (оно общее)
2) Сделать на сайте формочку для ввода логина и пароля, которая будет постить данные сразу в кабинет
здесь возникает ряд дополнений.
В этом втором случае форма постится по адресу
http://DOMAIN/do.control/oauth/authorize
Дополнительные параметры в форме:
action=login - обязательный параметр
client_id=1 - номер клиента. зависит от сервиса
redirect_uri=http://DOMAIN/login_true/ - здесь передаем адрес, куда сделать редирект в случае успешной авторизации
fail_uri=http://DOMAIN/login_false/ - здесь передаем адрес, куда сделать редирект в случае неуспешной авторизации
login=che - здесь передаем логин или емэйл (он у нас уникальный и по нему можно заходить как по логину)
password=12345 - здесь передаем пароль
в случае успешной авторизации попадаем на страницу redirect_uri с добавленным параметром code. code используется для дальнейшего получения данных как и в самом протоколе Oauth 2.0
В случае неуспешной авторизации попадаем на страницу fail_uri. Сюда в качестве параметра может быть передан необязательный параметр captcha=bad - это означает, что пользователь три раза ввел неверный пароль, и нужно показать капчу. Капча показывается по этой ссылке: http://DOMAIN/do.captcha/kaptcha.jpg
Значение капчи нужно передавать в поле captcha
------------------
После успешной авторизации пользователь перекидывается на ссылку where с параметром code
code используется для дальнейшего получения данных
В большинстве случаев нам достаточно знать логин пользователя и как минимум его имя-фамилию.
По протоколу OAuth 2.0 мы делаем минимум два запроса:
1-й запрос - получить токен доступа. этот токен доступа по умолчанию хранится достаточно долгое время - по нему можно запрашивать о пользователе разную информацию.
2-й запрос - по токену доступа получить данные о логине и имени-фамилии.
можно делать и другие запросы - получать другую информацию - например о купленных товарах и прочем.
токен доступа запрашивается по ссылке:
http://DOMAIN/do.control/oauth/access_token?client_id=%s&client_secret=%s&code=%s (ответ приходит в формате JSON)
http://DOMAIN/do.control/oauth/access_token.xml?client_id=%s&client_secret=%s&code=%s (ответ приходит в формате XML)
client_secret - секретный ключ, фиксированный для сервиса
в ответе приходит номер пользователя и токен доступа
Когда мы получили access_token, мы можем вызывать различные функции API по ссылке
method - наименование функции
http://DOMAIN/do.control/oauth/method/%s (ответ приходит в формате JSON)
http://DOMAIN/do.control/oauth/method/%s.xml (ответ приходит в формате XML)
В качестве параметра в функции API передаются параметры, указанные в функции, плюс обязательно access_token