JavaScript filo izleme kitaplığını kullanmadan önce Fleet Engine'ı tanıdığınızdan ve ayarladığınızdan emin olun. Ayrıntılar için Fleet Engine başlıklı makaleyi inceleyin.
Bu dokümanda, web sayfası uygulaması ile Fleet Engine arasında yetkilendirmenin nasıl etkinleştirileceği gösterilmektedir. Fleet Engine'a gönderdiğiniz istekler doğru yetkilendirme jetonlarıyla ayarlandıktan sonra bir aracı harita üzerinde izlemeye hazır olursunuz.
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. Güven düzeyi düşük ortamlar arasında akıllı telefonlar ve tarayıcılar bulunur. JWT, tamamen güvenilir bir ortam olan sunucunuzda oluşturulur. JWT, süresi dolana veya geçerliliğini yitirene kadar imzalanır, şifrelenir ve sonraki sunucu etkileşimleri için istemciye iletilir.
Arka uçunuz, standart Uygulama Varsayılan Kimlik Bilgileri mekanizmalarını kullanarak Fleet Engine'da kimlik doğrulaması ve yetkilendirme yapmalıdır. Uygun bir hizmet hesabı tarafından imzalanmış JWT'leri kullandığınızdan emin olun. Hizmet hesabı rollerinin listesi için Fleet Engine'in Temel Özellikleri başlıklı makalenin Fleet Engine hizmet hesabı rolleri bölümüne bakın.
Buna karşılık, arka uçunuz standart uygulama varsayılan kimlik bilgileri mekanizmalarını kullanarak Fleet Engine'e karşı kimlik doğrulaması ve yetkilendirme yapmalıdır.
Yetkilendirme nasıl çalışır?
Fleet Engine verileriyle yetkilendirme hem sunucu hem de istemci taraflı uygulamayı içerir.
Sunucu tarafı yetkilendirme
Filo izleme uygulamanızda kimlik doğrulama ve yetkilendirmeyi ayarlamadan önce arka uç sunucunuzun, Fleet Engine'a erişmek için filo izleme uygulamanıza JSON web jetonları gönderebilmesi gerekir. Fleet takip uygulamanız, bu JWT'leri istekleriyle birlikte gönderir. Böylece Fleet Engine, isteklerin kimliği doğrulanmış ve istekteki verilere erişme yetkisi olan istekler olarak tanır. Sunucu tarafı JWT uygulamayla ilgili talimatlar için Fleet Engine'in Temel Özellikleri bölümündeki JSON Web Jetonu Oluşturma başlıklı makaleyi inceleyin.
Filo takibi özelliğini uygularken sunucunuzdan jeton oluşturmak için aşağıdakilere bakın:- 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
- Talep üzerine seyahatler: Arka uç sunucu işlemi için örnek jeton
- Planlanmış görevler: Araç parkındaki tüm görevleri ve araçları takip etmek için örnek jeton
İstemci tarafı yetkilendirme
JavaScript Fleet izleme kitaplığını kullandığınızda, kitaplık bir yetkilendirme jetonu getirme aracı kullanarak sunucudan jeton ister. Bu işlem aşağıdakilerden biri geçerli olduğunda yapılır:
Geçerli bir jeton yok (ör. SDK yeni bir sayfa yüklendiğinde getirme aracını çağırmadıysa veya getirme aracı bir jetonla dönmediyse).
Jetonun süresi doldu.
Jetonun süresi bir dakika içinde dolacak.
Aksi takdirde JavaScript Fleet izleme kitaplığı daha önce verilen geçerli jetonu kullanır ve getirme aracını çağırmaz.
Yetkilendirme jetonu getirme aracısı oluşturma
Yetkilendirme jetonu alıcınızı aşağıdaki yönergeleri kullanarak oluşturun:
Alıcının, iki alan içeren bir veri yapısı döndürmesi gerekir. Bu yapı, aşağıdaki gibi bir
Promise
içine sarılmalıdır:Bir dize
token
.expiresInSeconds
numarası. Jetonun geçerlilik süresi, getirildikten sonra bu süre içinde sona erer. Kimlik doğrulama jetonu getirme aracı, örnekte gösterildiği gibi kitaplığa getirme zamanından itibaren geçerlilik bitiş süresini saniye cinsinden iletmelidir.
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. Aşağıdaki örnek URL, GitHub'daki örnek uygulama arka ucu içindir:https://SERVER_URL/token/fleet_reader
Örnek: Yetkilendirme jetonu getirme aracısı 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,
};
}