JavaScript Tüketici SDK'sını ayarlama

JavaScript Consumer SDK ile tüketici uygulamanız, Fleet Engine'de izlenen araçların konumunu ve diğer ilgi çekici yerleri 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 birlikte ayarladığınız varsayılır. Ayrıntılar için Fleet Engine başlıklı makaleyi inceleyin.

Aşağıdaki adımları uygulayarak JavaScript Consumer SDK'sını ayarlarsınız:

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

Maps JavaScript API'yi etkinleştirme

Filo Motoru ö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 başlıklı makaleyi inceleyin.

Yetkilendirme kurulumu

Fleet Engine, düşük güvenli ortamlardan (akıllı telefonlar ve tarayıcılar) gelen 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 son kullanıcılarınızın kimliğini Google Cloud projenizdeki delivery_consumer rolüyle doğrulamalıdır. Bu şekilde, Fleet Engine yanıtlardaki diğer tüm bilgileri filtreler ve çıkarır. Örneğin, uygun olmama görevi 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 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, bu JWT'leri istekleriyle birlikte gönderir. Böylece Fleet Engine, istekleri kimliği doğrulanmış ve istekteki verilere erişmek için yetkilendirilmiş olarak tanır. Sunucu tarafında JWT uygulamasıyla ilgili talimatlar için Fleet Engine'in Temel Özellikleri bölümündeki JSON Web Jetonları Verme başlıklı makaleyi inceleyin.

Özellikle kargoları izlemek için JavaScript Consumer SDK'sında aşağıdakileri göz önünde bulundurun:

İstemci tarafı yetkilendirme

JavaScript Consumer SDK'sı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:

  • SDK, yeni bir sayfa yüklemesinde alıcıyı çağırmadığında veya alıcı bir jetonla geri dönmediğinde olduğu gibi geçerli bir jeton yoktur.

  • Jetonun süresi doldu.

  • Jetonun süresinin dolmasına bir dakika kaldı.

Aksi takdirde, JavaScript Consumer SDK daha önce verilmiş olan 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 Promise iç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/delivery_consumer/TRACKING_ID

Örnek: Kimlik doğrulama jetonu alıcı oluşturma

Aşağıdaki örneklerde, yetkilendirme jetonu getiren bir işlevin 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?