Довольно часто при интеграции с Wialon у разработчиков, которые только начинают работать с SDK Wialon возникает множество вопросов по поводу правильного использования Wialon SDK.
Несмотря на то, что Remote API Wialon всех редакций (Wialon Local, Wialon Pro, Wialon Hosting) прекрасно документирован (документация доступна в русской и английской локализации), все же некоторые аспекты взаимодействия с API Wialon не так очевидны.
Цель данной статьи предоставить ответы на наиболее важный и частый вопрос при использовании Remote API Wialon.
Главная трудность с которой очень часто сталкиваются разработчики это авторизация Wialon.
Дело в том, что авторизация Wialon происходит согласно принципам oAuth. Для авторизации необходимо изначально получить специальный токен авторизации, который потом можно использовать для авторизации с использованием id сессии.
Рассмотрим пример авторизации более подробно. Для примера будет использован демо доступ к системе мониторинга Wialon Local.
Для получения токена необходимо изначально сформировать URL по которому будет происходит авторизация. Подробно о том как правильно сформировать данный URL описано в документации. В документации описано перечень query-параметров необходимых для формирования необходимого запроса.
Для разных серверов Wialon Local нашей компании данные параметры будут идентичны.
Рассмотрим некоторые самые важные параметры:
Параметр |
Описание | Рекомендованное значение |
access_type | уровень прав токена | 0x100 (отслеживание онлайн) |
duration | время жизни токена | 0 ( условно бессрочный токен, удаляется через 100 дней если не происходит авторизация) |
flags | флаги токена | 0х1 (возвращает имя пользователя в ответе) |
response_type | тип возвращаемого значения | token ( возвращает токен в ответе) |
Важное примечание. Токен может иметь разные права доступа. В таблице показано только базовое значение, которое позволяет вести мониторинг, но не позволяет выполнять большинство операций, которые изменяют состояние объектов. Для использования дополнительных операций необходимо сгенерировать токен авторизации с дополнительными правами (в случае, если пользователь при помощи которого происходит авторизация имеет необходимые права доступа). Подробнее о разных значениях уровня прав токена описано на этой странице.
Пример. Используя рекомендованные параметры для сервера http://local2.overseer.ua сформируем URL и получим токен авторизации.
Строка URL, необходимая для генерации токена выглядит следующим образом: http://local2.overseer.ua/login.html?access_type=….response_type=token
Далее необходимо скопировать данную строку в строку поиска браузера и перейти по ссылке.
Согласно скриншоту при использовании данных параметров будет получен токен, который позволяет вести слежение онлайн.
Далее необходимо ввести данные пользователя и нажать “Авторизовать”.
В случае успешной авторизации система сообщит об успешной авторизации как на скриншоте ниже:
Токен это 72-значное уникальное значение, которое необходимо скопировать из строки браузера (значение выделенное черным прямоугольником) и использовать в дальнейшем для интеграции в своих приложениях. При желании токен можно сгенерировать заново. В дальнейшем токен будет использован для авторизации.
Для авторизации будет использован REST API клиент, чтобы продемонстрировать еще один нюанс авторизации в Wialon Local посредством Remote API.
Согласно документации для обращения к API Wialon Local необходимо использовать только POST запросы.
Для авторизации необходимо сформировать и отправить методом POST запрос со следующим содержимым (https://sdk.wialon.com/wiki/ru/local/remoteapi1904/codesamples/login):
Параметр operateAs необязателен, при авторизации его можно не использовать.
Для Wialon Local OVERSEER запрос будет представлен в следующей форме:
http://local2.overseer.ua/wialon/ajax.html?svc=token/login¶ms={“token”:“<your token>”}
Если авторизация успешна будет получено содержимое примерно как на скриншоте ниже:
Здесь стоит обратить внимание на свойство eid в ответе. Это id сессии и он используется для выполнения запросов через API Wialon в рамках текущей сессии пользователя.
В запросах id сессии должен передаваться в качестве query-параметра sid для успешного выполнения http-запросов от имени авторизованного пользователя.
К примеру, попробуем завершить сессию. Согласно документации, для выполнения данного действия необходимо выполнить следующий http запрос методом POST.
В нашем случае это будет выглядеть как:
http://local2.overseer.ua/wialon/ajax.html?svc=core/logout¶ms={}&sid=<your sid(eid)>
В случае успешного выполнения мы получим сообщение {error:0} как показано на скриншоте:
Таким образом успешно завершается сессия пользователя посредством API.

Андрей Гонда
Инженер-программист
Компания Overseer