Как настроить Consumer SDK для JavaScript

Выберите платформу: Android iOS JavaScript

С помощью Consumer SDK для JavaScript ваше приложение для пользователей может показывать на веб-карте местоположение транспортных средств и другие интересующие местоположения, отслеживаемые в Fleet Engine. Это позволяет клиентам видеть, как продвигается поездка водителя. В этом руководстве предполагается, что вы настроили Fleet Engine со связанным проектом Google Cloud и ключами API. Подробнее о Fleet Engine…

Чтобы настроить Consumer SDK для JavaScript, выполните следующие действия:

  1. Включить Maps JavaScript API
  2. Настройка авторизации

Включить Maps JavaScript API

Включите Maps JavaScript API в консоли Google Cloud. Подробную информацию можно найти в статье Включение API в документации по Google Cloud. Это позволит включить Consumer SDK для JavaScript.

Настройте авторизацию

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

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

Основные сведения

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

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

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

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

В частности, помните о следующем при использовании Consumer SDK для JavaScript, чтобы делиться информацией о поездке:

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

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

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

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

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

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

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

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

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

    • Строка token.

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

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

    • https://SERVER_URL/token/consumer/TRIPID

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

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

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

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

Отслеживание поездки на JavaScript