Skip to content

Latest commit

 

History

History
87 lines (73 loc) · 3.72 KB

auth.md

File metadata and controls

87 lines (73 loc) · 3.72 KB

Авторизация

Основная авторизация

Запрос

POST /login

Параметры

login - логин пользователя
password - пароль пользователя

Ответ

# при успешной авторизации
{ 
   auth: Boolean,                     # состояние авторизации юзера на сайте (да/нет), 1 - при успешной авторизации
   user_id: Int,                      # id юзера
   user_login: String,                # логин юзера
   X-Session: String,                 # код сессии (например: "Z5RrvohMG2v56xph"),
}

# при неудаче
{
   auth: Boolean,                     # 0 - при отсутствии авторизации
   error_msg: String,                 # сообщение о причине отказа в авторизации
}

Возможные варианты error_msg:

  • Пустое значение у логина или пароля
  • Авторизация с этими логином и паролем не удалась

При успешной авторизации будет выдан уникальный код-ключ сессии (токен) "X-Session", который нужно будет добавлять в хедер при запросах к авторизованным ресурсам сайта (В запросах к json общего доступа, без авторизации, этот хиддер игнорируется):

X-Session: Z5RrvohMG2v56xph

Другой вариант получение ключа сессии - через cookie: Также - при успешной авторизации POST /login отдается хэдер Set-Cookie с куком fl_s. (Если он отсутствует при ответе, значит, авторизация не удалась. Значения куки fl_s и X-Session - одинаковы) Пример:

Set-Cookie: fl_s=Z5RrvohMG2v56xph; expires=Mon, 30 Jul 2019 06:46:11 GMT; domain=.fantlab.ru;

Срок валидности данного кука равен 1 году. Для подписи запросов следует подставлять его в хэдер Cookie. В данном случае

fl_s=Z5RrvohMG2v56xph

Статус авторизации

Запрос

GET /login

Параметры

Заголовок *X-Session* (или кук *fl_s*) c кодом авторизированной сессии.

Пример

/login - текущий статус авторизации на ФЛ (ваш)

Ответ

{
   auth: Boolean,                     # состояние авторизации юзера на сайте (да/нет)
}

Примечание: в состоянии авторизации дополнительно отдаются поля user_id, user_login и X-Session (как в примере овтета на POST выше).


Примечания про работы с cookie в Android: При авторизации следует отключить автоматический редирект в HttpClient'е, иначе произойдет перенаправление на главную сайта, а там хэдера Set-Cookie уже нет. В Retrofit это можно сделать при первоначальном конфигурировании:

httpClientBuilder.setFollowRedirects(false)

В Fuel чуть сложнее:

FuelManager.instance.apply {
    removeAllResponseInterceptors()
    addResponseInterceptor(validatorResponseInterceptor(200..299))
}