Как настроить библиотеку отслеживания автопарка на JavaScript

Прежде чем использовать библиотеку отслеживания автопарка JavaScript, убедитесь, что вы знакомы с Fleet Engine и настроили его. Подробнее о Fleet Engine…

В этом документе рассказывается, как включить авторизацию между приложением веб-страницы и Fleet Engine. После того как вы настроите запросы к Fleet Engine с правильными токенами авторизации, вы сможете отслеживать автомобиль на карте.

Как настроить авторизацию

Для вызовов методов API из незащищенных сред, таких как смартфоны и браузеры, Fleet Engine требует использовать токены JWT.

JWT создается на вашем сервере, подписывается, шифруется и передается клиенту для последующего взаимодействия с сервером, пока не истечет срок его действия или он не станет недействительным.

Важная информация

Как работает авторизация?

Для авторизации с использованием данных Fleet Engine требуется реализовать как серверную, так и клиентскую часть.

Авторизация на стороне сервера

Прежде чем настраивать аутентификацию и авторизацию в приложении для отслеживания автопарка, убедитесь, что серверная часть может выдавать веб-токены JSON приложению для отслеживания автопарка для доступа к Fleet Engine. Ваше приложение для отслеживания автопарка отправляет эти JWT со своими запросами, чтобы Fleet Engine распознавал запросы как аутентифицированные и авторизованные для доступа к данным в запросе. Инструкции по реализации JWT на стороне сервера можно найти в разделе Выпуск веб-токенов JSON статьи Основы Fleet Engine.

Чтобы генерировать токены на сервере при реализации отслеживания автопарка, ознакомьтесь со следующими ресурсами:

Клиентская авторизация

Когда вы используете библиотеку отслеживания Fleet Tracking для JavaScript, она запрашивает токен у сервера с помощью средства получения токена авторизации. Это происходит, если выполняется одно из следующих условий:

  • Нет действительного токена, например если SDK не вызвал загрузчик при загрузке страницы или если загрузчик не вернул токен.

  • Срок действия токена истек.

  • Срок действия токена истекает через минуту.

В противном случае библиотека отслеживания Fleet Tracking JavaScript использует ранее выданный действительный токен и не вызывает функцию получения.

Как создать средство получения токена авторизации

При создании сборщика токенов авторизации следуйте этим рекомендациям:

  • Извлекатель должен возвращать структуру данных с двумя полями, заключенную в тег Promise, как показано ниже:

    • Строка token.

    • уникальный идентификатор expiresInSeconds; Срок действия токена после получения. Сборщик токенов аутентификации должен передавать библиотеке срок действия в секундах, начиная с момента сбора, как показано в примере.

  • Загрузчик должен вызывать URL на вашем сервере, чтобы получить токен. Этот URL (SERVER_TOKEN_URL) зависит от реализации вашего внутреннего сервиса. Ниже приведен пример URL для бэкенда примера приложения на GitHub.

    • https://SERVER_URL/token/fleet_reader

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

В примерах ниже показано, как создать средство получения токена авторизации:

JavaScript

async function authTokenFetcher(options) {
  // options is a record containing two keys called
  // serviceType and context. The developer should
  // generate the correct SERVER_TOKEN_URL and request
  // based on the values of these fields.
  const response = await fetch(SERVER_TOKEN_URL);
  if (!response.ok) {
    throw new Error(response.statusText);
  }
  const data = await response.json();
  return {
    token: data.Token,
    expiresInSeconds: data.ExpiresInSeconds
  };
}

TypeScript

function authTokenFetcher(options: {
  serviceType: google.maps.journeySharing.FleetEngineServiceType,
  context: google.maps.journeySharing.AuthTokenContext,
}): Promise<google.maps.journeySharing.AuthToken> {
  // The developer should generate the correct
  // SERVER_TOKEN_URL based on options.
  const response = await fetch(SERVER_TOKEN_URL);
  if (!response.ok) {
    throw new Error(response.statusText);
  }
  const data = await response.json();
  return {
    token: data.token,
    expiresInSeconds: data.ExpiresInSeconds,
  };
}

Дальнейшие действия