JavaScript filosu izleme kitaplığını ayarlama

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:

İ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,
  };
}

Sırada ne var?