JavaScript filosu izleme kitaplığını ayarlama

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

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 Jetonları (JWT'ler) 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

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 izleme uygulamanız, bu JWT'leri istekleriyle birlikte gönderir. Böylece Fleet Engine, istekleri kimliği doğrulanmış ve istekteki verilere erişme yetkisine sahip olarak tanır. Sunucu tarafı JWT uygulamayla ilgili talimatlar için Fleet Engine'in Temel Özellikleri bölümündeki JSON Web Jetonu verme bölümüne bakın.

Filo takibi özelliğini uygularken sunucunuzdan jeton oluşturmak için aşağıdakileri inceleyin:

İstemci tarafı yetkilendirme

JavaScript Fleet izleme kitaplığını kullandığınızda, kitaplık bir yetkilendirme jetonu alıcı 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 işlevini çağırmadıysa veya getirme işlevi 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ılar, iki alan içeren bir veri yapısı döndürmelidir. Bu yapı, aşağıdaki gibi bir Promise içine sarılmalıdır:

    • Bir dize token.

    • expiresInSeconds numarası. Bir jetonun süresi, getirildikten sonra bu süre içinde dolar. 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,
  };
}

Sırada ne var?