JavaScript Tüketici SDK'sını ayarlama

JavaScript Tüketici SDK'sı sayesinde tüketici uygulamanız, Fleet Engine'da izlenen araçların ve diğer ilgi çekici konumların konumunu web tabanlı bir haritada gösterebilir. Bu sayede tüketici kullanıcılarınız gönderimlerinin durumunu görebilir. Bu kılavuzda, Fleet Engine'i ilişkili Google Cloud projesi ve API anahtarlarıyla kurduğunuz varsayılmaktadır. Ayrıntılar için Fleet Engine'e bakın.

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

  1. Haritalar JavaScript API'yi etkinleştirin.
  2. Yetkilendirmeyi ayarlayın.

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 dokümanlarındaki API'leri etkinleştirme bölümüne bakın.

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 imzalanır, şifrelenir ve geçerliliği sona erene kadar veya geçerliliğini yitirene kadar 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 imzalanan JWT'leri kullandığınızdan emin olun. Hizmet hesabı rollerinin listesi için Fleet Engine Temel Bilgileri bölümündeki Fleet Engine hizmet hesabı rollerine bakın.

Tüketici uygulamanızın, yalnızca tüketiciye özel bilgilerin döndürülmesi için son kullanıcılarınızın kimliğini Google Cloud projenizde delivery_consumer rolüyle doğrulaması gerekir. Bu sayede Fleet Engine, yanıtlardaki diğer tüm bilgileri filtreler ve çıkartır. Örneğin, "kullanılamayan" görevi sırasında son kullanıcıyla konum bilgisi paylaşılmaz. Planlanmış görevler için Hizmet hesabı rolleri bölümünü inceleyin.

Buna karşılık, arka ucunuzun standart Uygulama Varsayılan Kimlik Bilgileri mekanizmalarını kullanarak Fleet Engine'e karşı kimlik doğrulaması ve yetkilendirme yapması gerekir.

Yetkilendirme nasıl çalışır?

Fleet Engine verileriyle yetkilendirme hem sunucu tarafında hem de istemci tarafında uygulamayı kapsar.

Sunucu tarafı yetkilendirme

Web tabanlı uygulamanızda kimlik doğrulama ve yetkilendirmeyi ayarlamadan önce arka uç sunucunuzun, Fleet Engine'a erişmek için web tabanlı uygulamanıza JSON web jetonları gönderebilmesi gerekir. Web tabanlı uygulamanız, bu JWT'leri istekleriyle birlikte gönderir. Böylece Fleet Engine, istekleri doğrulanmış ve istekteki verilere erişme yetkisi verilmiş olarak tanır. Sunucu tarafı JWT uygulamasıyla ilgili talimatlar için Fleet Engine Essentials'ın altındaki JSON Web Jetonları Düzenleme bölümüne bakın.

Gönderimleri izlemek için JavaScript Tüketici SDK'sı için özellikle aşağıdakileri unutmayın:

İstemci tarafı yetkilendirme

JavaScript Tüketici SDK'sını kullandığınızda bu SDK, yetkilendirme jetonu alıcısını 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üresinin dolmasından itibaren bir dakika içinde olması gerekir.

Aksi takdirde, JavaScript Tüketici SDK'sı daha önce verilen geçerli jetonu kullanır ve alıcıyı çağırmaz.

Yetkilendirme jetonu alıcısı oluşturma

Aşağıdaki yönergeleri kullanarak yetkilendirme jetonu alıcınızı oluşturun:

  • Alıcı, aşağıdaki gibi bir Promise içine sarmalanmış iki alan içeren bir veri yapısı döndürmelidir:

    • Bir dize token.

    • expiresInSeconds sayısı. 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ı, 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. 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ı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?