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