Довольно часто при интеграции с 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&params={“token”:“<your token>”}

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

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

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

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

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

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

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

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

 

 

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

Остались вопросы? Напишите нам!