С помощью Consumer SDK для JavaScript ваше приложение для пользователей может показывать на веб-карте местоположение транспортных средств и другие интересующие местоположения, отслеживаемые в Fleet Engine. Это позволяет вашим пользователям-потребителям видеть ход выполнения своих поставок. В этом руководстве предполагается, что вы настроили Fleet Engine, а также связанный с ним облачный проект Google Cloud и ключи API. Подробнее о Fleet Engine…
Чтобы настроить Consumer SDK для JavaScript, выполните следующие действия:
Включить Maps JavaScript API
Включите Maps JavaScript API в проекте консоли Google Cloud, который вы используете для экземпляра Fleet Engine. Подробную информацию можно найти в разделе Включение API документации по Maps JavaScript API.
Настройте авторизацию
Для вызовов методов API из сред с низким уровнем доверия (смартфонов и браузеров) Fleet Engine требует использовать веб-токены JSON (JWT).
Токен JWT создается на вашем сервере, подписывается, шифруется и передается клиенту для последующих взаимодействий с сервером, пока не истечет срок его действия или он не станет недействительным.
Основные сведения
- Используйте Application Default Credentials для аутентификации и авторизации в Fleet Engine.
- Используйте подходящий сервисный аккаунт для подписи JWT. Подробнее о ролях сервисных аккаунтов Fleet Engine…
delivery_consumer из вашего облачного проекта Google Cloud, чтобы возвращать только информацию, предназначенную для пользователей. Таким образом, Fleet Engine фильтрует и редактирует всю остальную информацию в ответах. Например, во время выполнения задачи по недоступности геоданные не передаются конечному пользователю. Ознакомьтесь с ролями сервисных аккаунтов для запланированных задач.
Как работает авторизация?
Авторизация с данными Fleet Engine включает реализацию как на серверной, так и на клиентской стороне.
Авторизация на стороне сервера
Прежде чем настраивать аутентификацию и авторизацию в веб-версии приложения, убедитесь, что ваш бэкенд-сервер может выдавать веб-версии приложения веб-токены JSON для доступа к Fleet Engine. Ваше веб-приложение отправляет эти JWT со своими запросами, чтобы Fleet Engine распознавал запросы как аутентифицированные и авторизованные для доступа к данным в запросе. Инструкции по реализации JWT на стороне сервера можно найти в разделе Выпуск веб-токенов JSON статьи Основы Fleet Engine.
В частности, при использовании Consumer SDK для JavaScript для отслеживания доставки учитывайте следующее:- Общие рекомендации по выпуску веб-токенов JSON
- Рекомендации по использованию JWT для запланированных задач
- Пример токена для приложения для пользователей
Клиентская авторизация
Когда вы используете Consumer SDK для JavaScript, он запрашивает токен у сервера с помощью сборщика токенов авторизации. Это происходит в следующих случаях:
Действительный токен отсутствует. Например, SDK не вызвал сборщик при загрузке страницы или сборщик не вернул токен.
Срок действия токена истек.
Срок действия токена истекает через минуту.
В противном случае Consumer 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
};
}
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,
};
}