JavaScript filo izleme kitaplığını kullanmadan önce ve kurmuş olmanız gerekir. Ayrıntılar için bkz. Filo Motoru.
Bu dokümanda, web sayfası uygulaması ile Fleet Engine arasında yetkilendirmenin nasıl etkinleştirileceği gösterilmektedir. Fleet Engine'e gönderdiğiniz istekler doğru yetkilendirme jetonları ile ayarlandığını fark ederseniz harita üzerinde takip edebilirsiniz.
Yetkilendirme kurulumu
Fleet Engine, JSON Web Jetonlarının (JWT) düşük güventan gelen API yöntemi çağrıları için uygun hizmet hesabı ortamlar için geçerlidir. Akıllı telefonlar ve tarayıcılar, güven düzeyinin düşük olduğu ortamlara dahildir. JWT tamamen güvenilir bir ortam olan sunucunuzdan kaynaklandığı için JWT imzalanır, şifrelenir ve sonraki sunucu için istemciye iletilir geçerlilik süresi sona erene kadar veya geçerliliğini yitirene kadar işlem gerçekleştiremez.
Arka ucunuz aşağıdakileri kullanarak Fleet Engine'e karşı kimlik doğrulamalı ve yetkilendirme yapmalıdır: Application Default Credentials (Uygulama Varsayılan Kimlik Bilgileri) mekanizmalarını kullanın. Marka uygun bir hizmet hesabı tarafından imzalanmış JWT'leri kullandığınızdan emin olun. Örneğin, hizmet hesabı rollerinin listesi için Fleet Engine hizmet hesabı rollerine bakın Fleet Engine Basics (Filo Motoru Temel Bilgileri) bölümüne göz atın.
Yetkilendirme nasıl çalışır?
Fleet Engine verileriyle yetkilendirme hem sunucu tarafını hem de istemci tarafını içerir bazı ipuçları vereceğim.
Sunucu tarafı yetkilendirme
Filo izleme uygulamanızda yetkilendirmeyi ayarlamadan önce arka uç sunucunuz JSON web jetonları yayınlayabilmelidir. Bu sayede Fleet Engine, uygulamanızdan gelen istekleri, erişim izni olarak tanır veriler yer alır. Sunucu tarafı JWT uygulamasıyla ilgili talimatlar için Fleet Engine Essentials altında JSON Web Jetonları yayınlayın.
Filo izlemeyi uygularken sunucunuzdan jetonlar oluşturmak için takip etmek için:- Hem isteğe bağlı seyahatler hem de planlanmış görevler için bölümler içeren JSON Web Jetonu yayınlamayla ilgili genel yönergeler
- İsteğe bağlı geziler: Arka uç sunucu işlemi için örnek jeton
- Planlanmış görevler: Filodaki tüm görevleri ve araçları izlemek için örnek jeton
İstemci tarafı yetkilendirme
JavaScript Filosu izleme kitaplığını kullandığınızda, JavaScript Filosu izleme kitaplığı, yetkilendirme jetonu alıcısı. Bunu, aşağıdakilerden herhangi biri doğru olduğunda yapar:
Geçerli bir jeton bulunmuyor (örneğin, SDK'nın alıcıyı çağırmadığı durumlarda) yeni bir sayfa yüklemesinde veya alıcı bir jeton geri döndürmediğinde.
Jetonun süresi doldu.
Jetonun süresinin dolmasından itibaren bir dakika içinde olması gerekir.
Aksi takdirde, JavaScript Filosu izleme kitaplığı daha önce verilen geçerli jetonu kullanır ve getirmez.
Yetkilendirme jetonu alıcısı oluşturma
Yetkilendirme jetonu alıcınızı aşağıdaki yönergeleri kullanarak oluşturun:
Alıcı, iki alanı olan bir veri yapısı döndürmelidir. Bu veri yapısı
Promise
şu şekildedir:token
dizesi.expiresInSeconds
numarası. Bu süre içinde bir jetonun süresi doluyor sonra görünür. Kimlik doğrulama jetonunun sahibi, son geçerlilik tarihini geçmelidir getirme zamanından kitaplığa kadar saniye cinsinden süre cinsinden verelim.
Alıcı, bir jeton almak için sunucunuzdaki bir URL'yi çağırmalıdır. Bu URL (
SERVER_TOKEN_URL
), arka uç uygulamanıza bağlıdır. İlgili içeriği oluşturmak için kullanılan aşağıdaki örnek URL, GitHub'daki örnek uygulama arka ucu içindir:https://SERVER_URL/token/fleet_reader
Örnek: Yetkilendirme jetonu alıcısı oluşturma
Aşağıdaki örneklerde, yetkilendirme jetonu alıcısının nasıl oluşturulacağı gösterilmektedir:
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,
};
}