ИНТЕГРАЦИЯ WIALON LOCAL СО СТОРОННИМ ПО
Remote API Wialon всех редакций (Wialon Local, Wialon Pro, Wialon Hosting) прекрасно документирован (документация доступна в русской и английской локализации). Но все же некоторые аспекты взаимодействия с API Wialon не так очевидны.
Цель данной статьи предоставить ответы на наиболее важный и частый вопрос при использовании Remote API Wialon.
Главная трудность с которой очень часто сталкиваются разработчики - это авторизация Wialon. Авторизация Wialon происходит согласно принципам oAuth. Для авторизации необходимо изначально получить специальный токен авторизации, который используется для авторизации с использованием id сессии.
Рассмотрим пример авторизации более подробно. Для примера будет использован демо доступ к системе мониторинга Wialon Local от OVERSEER.
Для получения токена необходимо изначально сформировать URL по которому будет происходит авторизация. Подробно о том как правильно сформировать данный URL описано в документации от разработчика. В документации описано перечень query-параметров необходимых для формирования необходимого запроса. Для разных серверов Wialon Local нашей компании данные параметры будут идентичны, различия только в URL-е для подключения к серверу.
Рассмотрим некоторые самые важные параметры:
ПАРАМЕТР | ОПИСАНИЕ | РЕКОМЕНДОВАННЫЕ ПАРАМЕТРЫ |
---|---|---|
client_id | название приложения/сайта/клиента,для которого сгенерировать токен | название сайта (title) |
access_type | уровень прав токена | 0x100 (отслеживание) |
activation_time | время активации токена (время UTC в секундах: 0 - сейчас) | 0 |
duration | время жизни токена (в секундах) MAX_DURATION = 8640000 - 100 дней, 0 - срок жизни не ограничен | 0 (условно бессрочный токен, удаляется через 100 дней без авторизации) |
lang | язык (en, uk, …) | |
flags | флаги токена | 0x1 - возвращать в ответе имя пользователя |
user | имя пользователя (подставится в поле логина) | |
redirect_uri | URL, на который переадресовать страницу и передать результаты авторизации | сама форма login.html |
response_type | возвращать в ответе токен (token) или AuthHash (hash) | token |
css_url | URL к CSS-файлу с произвольными стилями для формы |
Важное примечание: Токен может иметь разные права доступа. В таблице показано только базовое значение, которое позволяет вести мониторинг, но не позволяет выполнять большинство операций, которые изменяют состояние объектов. Для использования дополнительных операций необходимо сгенерировать токен авторизации с дополнительными правами (в случае, если пользователь при помощи которого происходит авторизация имеет необходимые права доступа). Подробнее о разных значениях уровня прав токена описано на этой странице.
Пример: Используя рекомендованные параметры для сервера https://local.overseer.ua сформируем URL и получим токен авторизации. Строка URL, необходимая для генерации токена, выглядит следующим образом:
https://local.overseer.ua/login.html?access_type=….response_type=token&lang=ru
URL для генерции токена без срока давности:
https://local.overseer.ua/login.html?access_type=….response_type=token&lang=ru&duration=0
Далее необходимо скопировать данную строку в строку поиска браузера и перейти по ссылке.
Далее необходимо ввести данные пользователя и нажать “Авторизовать”.
Согласно скриншоту при использовании данных параметров будет получен токен, который позволяет вести слежение онлайн.
Далее необходимо ввести данные пользователя и нажать “Авторизовать”.
В случае успешной авторизации система сообщит об успешной авторизации как на скриншоте ниже:
Токен - это 72-значное уникальное значение, которое необходимо скопировать из строки браузера (значение выделенное красным прямоугольником) и использовать в дальнейшем для интеграции в своих приложениях. При желании токен можно сгенерировать заново. В дальнейшем токен будет использован для авторизации. Обратите внимание, что при смене пароля Пользователем токен перестает быть активным.
Для авторизации будет использован REST API клиент, чтобы продемонстрировать еще один нюанс авторизации в Wialon Local посредством Remote API.
Согласно документации для обращения к API Wialon Local необходимо использовать только POST запросы.
Для авторизации необходимо сформировать и отправить методом POST запрос со следующим содержимым:
https://local.overseer.ua/wialon/ajax.html?svc=token/login&
params={
"token":"2fe8024e0ab91aa6c8ed82717b71bddcECDC362358DF7D90986F5173D405CD0D42DE7B38"
}
Параметр operateAs необязателен, при авторизации его можно не использовать.
Для Wialon Local от OVERSEER запрос будет представлен в следующей форме:
http://local.overseer.ua/wialon/ajax.html?svc=token/login¶ms={“token”:“<your token>”}
Если авторизация успешна, будет получено содержимое примерно как на скриншоте ниже:
Здесь стоит обратить внимание на свойство eid в ответе. Это id сессии и он используется для выполнения запросов через API Wialon в рамках текущей сессии пользователя.
В запросах id сессии должен передаваться в качестве query-параметра sid для успешного выполнения http-запросов от имени авторизованного пользователя.
К примеру, попробуем завершить сессию. Согласно документации, для выполнения данного действия необходимо выполнить следующий http запрос методом POST.
http://local.overseer.ua/wialon/ajax.html?svc=core/logout¶ms={}&sid=<your sid(eid)>
В нашем случае это будет выглядеть как:
http://local.overseer.ua/wialon/ajax.html?svc=core/logout¶ms={}&sid=8c3101591632f6e7ef686d33fcc0d55
В случае успешного выполнения мы получим сообщение {error:0} как показано на скриншоте:
Таким образом успешно завершается сессия пользователя посредством API.