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ı ve Fleet Engine. Fleet Engine'e gönderdiğiniz istekler doğru yetkilendirme jetonları ile ayarlandığını fark ederseniz harita üzerinde takip edebilirsiniz.
Yetkilendirme kurulumu
Güvenilirliği düşük ortamlardan gelen API yöntemi çağrıları için Fleet Engine, uygun bir hizmet hesabı tarafından imzalanan JSON Web Jetonları'nın (JWT'ler) kullanılmasını gerektirir. 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, süresi dolana veya geçerliliğini yitirene kadar imzalanır, şifrelenir ve sonraki sunucu etkileşimleri için istemciye iletilir. Ö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.
Buna karşılık, arka ucunuzun Fleet Engine'e karşı kimlik doğrulaması ve yetkilendirme yapması gerekir. standart Uygulama Varsayılan Kimlik Bilgilerini kullanarak mekanizmalar.
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 yetkilendirme ayarlamadan önce arka ucunuz sunucu, JSON Web Jetonları sunabilmelidir. 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:- JSON Web Jetonları vermeyle ilgili genel yönergeler aşağıdakileri içerir: hem istek üzerine geziler hem de planlanmış görevler için bölümler
- Talep üzerine seyahatler: 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
Aşağıdaki yönergeleri kullanarak yetkilendirme jetonu alıcınızı oluşturun:
Alıcı, iki alanı olan bir veri yapısı döndürmelidir. Bu veri yapısı
Promise
şu şekildedir:token
dizesi.expiresInSeconds
sayısı. 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ının, jeton almak için sunucunuzdaki bir URL'yi çağırması gerekir. 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,
};
}