JavaScript Tüketici SDK'sını ayarlama

JavaScript Tüketici SDK'sı sayesinde tüketici uygulamanız, Fleet Engine'da takip edilen araçların konumunu ve ilgilenilen diğer konumları web tabanlı bir haritada gösterebilir. Bu sayede tüketici kullanıcılarınız gönderilerinin ilerleme durumunu görebilir. Bu kılavuzda, Fleet Engine'i ilişkili Google Cloud projesi ve API anahtarlarıyla ayarladığınız varsayılır. Ayrıntılar için Fleet Engine'i inceleyin.

JavaScript Tüketici SDK'sını aşağıdaki adımları uygulayarak ayarlayabilirsiniz:

  1. Maps JavaScript API'yi etkinleştirin.
  2. Yetkilendirme kurulumu

Maps JavaScript API'yi etkinleştirme

Fleet Engine örneğiniz için kullandığınız Google Cloud Console projesinde Maps JavaScript API'yi etkinleştirin. Daha fazla bilgi için Maps JavaScript API belgelerindeki API'leri etkinleştirme bölümüne bakın.

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

Tüketici uygulamanız, yalnızca tüketiciye özel bilgileri döndürmek için Google Cloud projenizdeki delivery_consumer rolüyle son kullanıcılarınızın kimliğini doğrulamalıdır. Bu sayede Fleet Engine, yanıtlardaki diğer tüm bilgileri filtreler ve çıkarır. Örneğin, müsaitlik dışı görev sırasında son kullanıcıyla konum bilgisi paylaşılmaz. Planlanmış görevler için Hizmet hesabı rolleri başlıklı makaleyi inceleyin.

Yetkilendirme nasıl çalışır?

Fleet Engine verileriyle yetkilendirme, hem sunucu tarafı hem de istemci tarafı uygulamayı içerir.

Sunucu tarafı yetkilendirme

Web tabanlı uygulamanızda kimlik doğrulama ve yetkilendirme işlemlerini ayarlamadan önce arka uç sunucunuzun, Fleet Engine'e erişim için web tabanlı uygulamanıza JSON Web Jetonları verebilmesi gerekir. Web tabanlı uygulamanız, istekleriyle birlikte bu JWT'leri gönderir. Böylece Fleet Engine, 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.

Özellikle, gönderileri takip etmek için JavaScript Tüketici SDK'sı ile ilgili olarak aşağıdakileri göz önünde bulundurun:

İstemci tarafı yetkilendirme

JavaScript Tüketici SDK'sını kullandığınızda, sunucudan bir yetkilendirme jetonu getirme aracı kullanarak jeton ister. Aşağıdakilerden herhangi biri geçerli olduğunda bu işlemi yapar:

  • 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 Tüketici SDK'sı daha önce verilen geçerli jetonu kullanır ve getirme aracını çağırmaz.

Yetkilendirme jetonu getirme işlevi oluşturma

Aşağıdaki yönergeleri kullanarak yetkilendirme jetonu getirme işlevinizi oluşturun:

  • Getirici, iki alan içeren bir veri yapısı döndürmelidir. Bu yapı, aşağıdaki gibi bir Promise içinde sarmalanmalıdır:

    • Bir dize token.

    • expiresInSeconds sayısı. Jetonun geçerlilik süresi, alındıktan sonra bu süre içinde sona erer. Kimlik doğrulama jetonu getirme aracı, örnekte gösterildiği gibi, getirme zamanından itibaren saniye cinsinden süre sonunu 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/delivery_consumer/TRACKING_ID

Örnek: Kimlik doğrulama jetonu getirme aracı 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?