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