Настройте библиотеку отслеживания автопарка JavaScript.

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

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

Настройка авторизации

Для вызова методов API из сред с низким уровнем доверия (смартфонов и браузеров) Fleet Engine требует использования JSON Web Tokens (JWT).

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

Ключевые детали

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

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

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

Before you set up authentication and authorization in your Fleet tracking application, your backend server must be able to issue JSON Web Tokens to your Fleet tracking application for access to Fleet Engine. Your Fleet tracking application sends these JWTs with its requests so Fleet Engine recognizes the requests as authenticated and authorized to access the data in the request. For instructions on server-side JWT implementation, see Issue JSON Web Tokens under Fleet Engine Essentials .

Для генерации токенов на вашем сервере при внедрении системы отслеживания флота см. следующие инструкции:

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

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

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

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

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

В противном случае библиотека отслеживания флота на 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
  };
}

Машинопись

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,
  };
}

Что дальше?