Авторизация. Часть 2
Продолжая тему webAPI ICQ сегодня опишу способы авторизации более подробно. Помимо схемы описанной в предыдущей статье, получить заветный token можно следующим способом:
Авторизация через api.login.icq.net:
URL | https://api.login.icq.net/auth/clientLogin | |
HTTP Method | POST | |
Параметры: | ||
Параметр | Тип | Описание |
---|---|---|
devId | обязат. | Идентификатор клиента, требуется для доступа к API |
f | обязат. | Требуемый формат ответа (json, xml, qs или php) |
s | обязат. | loginID пользователя (UIN, mail, номер телефона) |
language | опцион. | Требуемый язык для возвращаемых сообщений ответа/ошибок. Используемый формат <lang>-<locale> .Если недоступно, то язык будет извлечен из HTTP заголовка (Accept-Language) и, при недоступности последнего, будет использован по умолчанию «en-us». |
tokenType | опцион. | shortterm (время жизни токена 24 часа – по умолчанию) или longterm (действителен 1 год) или любое беззнаковое целое (unsigned long) значение, представляющее необходимое время жизни токена в секундах |
c | опцион. | Калбэк, применяемый при использовании JSONP (f = json) |
r | опцион. | значение параметра возвращается в ответе в requestId |
pwd | опцион. | Пароль |
idType | опцион. | аутентификация пользователя ICQ |
clientName | опцион. | Имя клиента |
clientVersion | опцион. | Версия клиента |
pwd – пароль лучше отправлять в кодированном виде – StrToHex(UTF-8), для примера, пароль вида df^r!3$ будет выглядеть так: %EF%BB%BF%64%66%5E%72, это позволит избежать проблем со спецсимволами.
Если пароль и loginID проходят валидацию (исключение авторизация с использованием анонимной сессии), то в ответ приходит примерно такой текст:
200 OK 315569260 %2FwQAAAAAAAE2mZ%2F88WmZRrostaP.....wHUAI%3DmBxNcWdfrQMR9lcB 1328732124 48648000
где a – это токен сессии, а sessionSecret – секретный ключ, служащий для подписи GET запросов.
Токен и секретный ключ сессии сохраняются в базе клиента, и используются для получения cookies, что бы подключиться к BOS серверу по бинарному протоколу, а так же для открытия aim сессии, подписания (sig_sha256) запросов по HTTP.