JavaScript filo izleme kitaplığını kullanmadan önce Fleet Engine'i tanıdığınızdan ve ayarladığınızdan emin olun. Ayrıntılar için Fleet Engine başlıklı makaleyi inceleyin.
Bu belgede, web sayfası uygulaması ile Fleet Engine arasında yetkilendirmenin nasıl etkinleştirileceği gösterilmektedir. Fleet Engine'e gönderilen istekleriniz doğru yetkilendirme jetonlarıyla ayarlandıktan sonra haritada araç izlemeye hazır olursunuz.
Yetkilendirme kurulumu
Fleet Engine, güven düzeyi düşük ortamlardan (akıllı telefonlar ve tarayıcılar) API yöntemi çağrıları için JSON Web Token (JWT) kullanılmasını gerektirir.
JWT, sunucunuzda oluşturulur, imzalanır, şifrelenir ve süresi dolana veya geçerliliğini yitirene kadar sonraki sunucu etkileşimleri için istemciye iletilir.
Önemli ayrıntılar
- Fleet Engine'e karşı kimlik doğrulamak ve yetkilendirmek için Uygulama Varsayılan Kimlik Bilgileri'ni kullanın.
- JWT'leri imzalamak için uygun bir hizmet hesabı kullanın. Fleet Engine ile İlgili Temel Bilgiler bölümündeki Fleet Engine hizmet hesabı rollerini inceleyin.
Yetkilendirme nasıl çalışır?
Fleet Engine verileriyle yetkilendirme hem sunucu tarafı hem de istemci tarafı uygulamayı içerir.
Sunucu tarafı yetkilendirme
Filo izleme uygulamanızda kimlik doğrulama ve yetkilendirme ayarlarını yapmadan önce arka uç sunucunuzun, Fleet Engine'e erişim için filo izleme uygulamanıza JSON Web Jetonları verebilmesi gerekir. Filo izleme uygulamanız, istekleriyle birlikte bu JWT'leri gönderir. Böylece Filo Altyapısı, istekleri kimliği doğrulanmış ve istekteki verilere erişim yetkisi verilmiş olarak tanır. Sunucu tarafı JWT uygulamasıyla ilgili talimatlar için Fleet Engine ile İlgili Temel Bilgiler bölümündeki JSON Web Jetonları Oluşturma başlıklı makaleyi inceleyin.
Filo takibini uygularken sunucunuzdan jeton oluşturmak için aşağıdakilere bakın:- Hem talep üzerine geziler hem de planlanmış görevler için bölümler de dahil olmak üzere JSON web jetonları yayınlamayla ilgili genel yönergeler
- Seç-izle geziler: Arka uç sunucu işlemi için örnek jeton
- Planlanmış görevler: Filodaki tüm görevleri ve araçları takip etmek için örnek jeton
İstemci tarafı yetkilendirme
JavaScript filo izleme kitaplığını kullandığınızda, yetkilendirme jetonu getirici kullanarak sunucudan jeton istenir. Bu işlem, aşağıdaki durumlardan herhangi biri geçerli olduğunda yapılır:
Geçerli bir jeton yok (ör. SDK, yeni bir sayfa yüklemesinde getiriciyi çağırmadığında veya getirici bir jeton döndürmediğinde).
Jetonun süresi doldu.
Jetonun süresinin dolmasına bir dakika kaldı.
Aksi takdirde, JavaScript Filo Takibi kitaplığı daha önce verilen geçerli jetonu kullanır ve getiriciyi çağırmaz.
Yetkilendirme jetonu alıcı oluşturma
Aşağıdaki yönergeleri kullanarak yetkilendirme jetonu alıcınızı oluşturun:
Getirici, iki alan içeren bir veri yapısı döndürmelidir. Bu yapı, aşağıdaki gibi bir
Promiseiçine yerleştirilmelidir:Bir dize
token.Bir sayı
expiresInSeconds. Jeton, getirilmesinden sonra bu süre içinde sona erer. Kimlik doğrulama jetonu alıcı, örnekte gösterildiği gibi, getirme zamanından itibaren geçerlilik bitiş zamanını saniye cinsinden kitaplığa iletmelidir.
Getirici, 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. Aşağıdaki örnek URL, GitHub'daki örnek uygulama arka ucu içindir:https://SERVER_URL/token/fleet_reader
Örnek: Yetkilendirme jetonu alıcı oluşturma
Aşağıdaki örneklerde, yetkilendirme jetonu getirme aracı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,
};
}