OAuth - протокол авторизации, в котором пользователь может разрешить приложению-клиенту доступ к данным пользователя (ресурсу) на основном сайте, не передавая приложению свои логин/пароль.
Определения:
- Пользователь - человек, зарегистрированный на сайте
fantlab.ru. - Клиент - третья сторона (сервис/сайт/etc), которая может перенаправлять пользователей на OAuth-авторизацию.
- Ресурс - структурированная информация, которую может запрашивать клиент на сайте
fantlab.ruпосле авторизации с разрешения пользователя.
- Основной запрос на авторизацию
- Получение токена доступа / С использованием токена восстановления
- Получение ресурса с использованием токена
Запрос
GET /oauth/login?response_type=code&client_id={clien_id}&redirect_uri={redirect_uri}&redirect_noauth_uri={redirect_noauth_uri}&redirect_cancel_uri={redirect_cancel_uri}
Параметры
client_id - идентификатор клиента
redirect_uri - uri для перенаправления после удачной авторизации
redirect_noauth_uri - uri для перенаправления при неудачной авторизации (необязательный)
redirect_cancel_uri - uri для перенаправления по нажатию кнопки "Отмена" (необязательный)
Пример
GET /oauth/login?response_type=code&client_id=1023&redirect_uri=http%3A%2F%2Fexample.com%2Fauth%2Fok
Ответ
уточнить
Запрос
GET /oauth/token?grant_type=authorization_code&code={code}&client_id={client_id}&client_secret={client_secret}&redirect_url=${redirect_url}
Параметры
code - код, полученный после авторизации
client_id - идентификатор клиента
client_secret - секрет клиента
redirect_url - uri, используемый для перенаправления при логине
Пример
GET /oauth/token?grant_type=authorization_code&code=fhFPky2CG&client_id=1023&client_secret=mWoWHPDhg&redirect_url=http%3A%2F%2Fexample.com%2Fauth%2Foktoken
Ответ
{
access_token: String, # токен доступа
expires_in: Int, # время жизни токена (с.)
refresh_token: String, # токен восстановления
token_type: String # тип токена
}
В случае, если при получении ресурса выдается ошибка access_denied, это означает, что истек срок действия токена. Получить новый токен можно с помощью токена восстановления (refresh_token), который был получен вместе с токеном доступа.
Запрос
GET /oauth/token?grant_type=refresh_token&refresh_token={refresh_token}&client_id={client_id}&client_secret={client_secret}&redirect_url={redirect_url}
Параметры
refresh_token - токен восстановления
client_id - идентификатор клиента
client_secret - секрет клиента
redirect_url - uri, используемый для перенаправления при логине
Пример
GET /oauth/token?grant_type=refresh_token&refresh_token=fhFPky2CG&client_id=121212&client_secret=mWoWHPDhg&redirect_url=http%3A%2F%2Fexample.com%2Fcb%2F123
Ответ
{
access_token: String, # новый токен доступа
expires_in: Int, # время жизни токена (с.)
refresh_token: String, # новый токен восстановления
token_type: String # тип токена
}
Запрос
GET /oauth/get?oauth_token={oauth_token}&client_id={client_id}&resources={resources}
Параметры
oauth_token - токен доступа
client_id - идентификатор клиента
resources - список запрашиваемых ресурсов (в качестве разделителя используется `,`)
Пример
GET /oauth/get?oauth_token=mWoWHPDhg&client_id=121212&resources=em,rn,nk,sx,av,bd,cn,ct
Ответ
{
id: Int|null, # [resources += id] id пользователя
em: String|null, # [resources += em] адрес электронной почты
sx: String|null, # [resources += sx] пол
rn: String|null, # [resources += rn] настоящее имя
nk: String|null, # [resources += nk] логин
av: Url|null, # [resources += av] url аватарки
bd: Long|null, # [resources += bd] дата рождения (UNIX-таймштамп)
cn: String|null, # [resources += cn] страна
ct: String|null # [resources += ct] город
}
Для тестирования можно использовать следующие параметры (ограничены по количеству обращений):
code = test321
client_secret = 2onNZkfjEK
При запуске приложения в релиз обратитесь на support@fantlab.ru для получения собственного кода для клиента.