Настройка потребительского SDK JavaScript

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

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

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

Включите API JavaScript Карт

Включите Maps JavaScript API в проекте Google Cloud Console, который вы используете для своего экземпляра Fleet Engine. Дополнительные сведения см. в разделе «Включение API» документации Maps JavaScript API.

Настроить авторизацию

Для вызовов методов API из сред с низким уровнем доверия Fleet Engine требует использования веб-токенов JSON (JWT), подписанных соответствующей учетной записью службы. К средам с низким уровнем доверия относятся смартфоны и браузеры. JWT создается на вашем сервере, который является полностью доверенной средой . JWT подписывается, шифруется и передается клиенту для последующего взаимодействия с сервером до тех пор, пока не истечет срок его действия или он не станет действительным.

Серверная часть должна аутентифицироваться и авторизоваться в Fleet Engine с использованием стандартных механизмов учетных данных приложения по умолчанию . Обязательно используйте JWT, подписанные соответствующей учетной записью службы. Список ролей сервисных учетных записей см. в разделе Роли сервисных учетных записей Fleet Engine в Основах Fleet Engine .

Ваше потребительское приложение должно аутентифицировать ваших конечных пользователей с помощью роли delivery_consumer из вашего проекта Google Cloud, чтобы возвращать только информацию, специфичную для потребителя. Таким образом, Fleet Engine фильтрует и редактирует всю остальную информацию в ответах. Например, во время задачи недоступности конечным пользователям не передается никакая информация о местоположении. См. Роли учетной записи службы для запланированных задач.

Напротив, ваш сервер должен аутентифицироваться и авторизоваться в Fleet Engine, используя стандартные механизмы учетных данных приложения по умолчанию .

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

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

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

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

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

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

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

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

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

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

В противном случае потребительский SDK JavaScript использует ранее выданный действительный токен и не вызывает сборщик.

Создайте сборщик токенов авторизации

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

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

    • Строковый token .

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

  • Сборщик должен вызвать URL-адрес на вашем сервере, чтобы получить токен. Этот URL-адрес — SERVER_TOKEN_URL — зависит от реализации вашей серверной части. Следующий пример URL-адреса предназначен для примера серверной части приложения на GitHub :

    • https://SERVER_URL/token/delivery_consumer/TRACKING_ID

Пример. Создайте сборщик токенов аутентификации.

В следующих примерах показано, как создать сборщик токенов авторизации:

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

Что дальше