Перейти к содержанию

ИНТЕГРАЦИЯ 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

Далее необходимо скопировать данную строку в строку поиска браузера и перейти по ссылке.

Рис. 1. Генерация токена (шаг 1)

Далее необходимо ввести данные пользователя и нажать “Авторизовать”.

Рис. 2. Генерация токена (шаг 2)

Согласно скриншоту при использовании данных параметров будет получен токен, который позволяет вести слежение онлайн.

Далее необходимо ввести данные пользователя и нажать “Авторизовать”.

В случае успешной авторизации система сообщит об успешной авторизации как на скриншоте ниже:

Рис. 3. Генерация токена (шаг 3)

Токен - это 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&params={“token”:“<your token>”}

Если авторизация успешна, будет получено содержимое примерно как на скриншоте ниже:

Рис. 4. Успешная авторизация

Здесь стоит обратить внимание на свойство eid в ответе. Это id сессии и он используется для выполнения запросов через API Wialon в рамках текущей сессии пользователя.

В запросах id сессии должен передаваться в качестве query-параметра sid для успешного выполнения http-запросов от имени авторизованного пользователя.

К примеру, попробуем завершить сессию. Согласно документации, для выполнения данного действия необходимо выполнить следующий http запрос методом POST.

http://local.overseer.ua/wialon/ajax.html?svc=core/logout&params={}&sid=<your sid(eid)>

В нашем случае это будет выглядеть как:

http://local.overseer.ua/wialon/ajax.html?svc=core/logout&params={}&sid=8c3101591632f6e7ef686d33fcc0d55

В случае успешного выполнения мы получим сообщение {error:0} как показано на скриншоте:

Рис. 5. Завершение сессии

Таким образом успешно завершается сессия пользователя посредством API.