JavaScript Tüketici SDK'sı sayesinde tüketici uygulamanız, Fleet Engine'da izlenen araçların ve diğer ilgilenilen 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'ı ilişkili Google Cloud projesi ve API anahtarlarıyla ayarladığınız 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:
Maps JavaScript API'yi etkinleştirme
Fleet Engine örneğiniz için kullandığınız Google Cloud Console projesinde Haritalar JavaScript API'sini etkinleştirin. Daha fazla bilgi için Maps JavaScript API dokümanlarında 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 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
- Fleet Engine'da kimlik doğrulama ve yetkilendirme yapmak için Uygulama Varsayılan Kimlik Bilgileri'ni kullanın.
- JWT'leri imzalamak için uygun bir hizmet hesabı kullanın. Fleet Engine'in Temel Özellikleri bölümünde Fleet Engine hizmet hesabı rollerine bakın.
delivery_consumer
rolüyle doğrulamalıdır. Bu sayede Fleet Engine, yanıtlardaki diğer tüm bilgileri filtreler ve çıkartır. Örneğin, müsait olmama görevi sırasında son kullanıcıyla hiçbir 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 hem de istemci taraflı uygulamayı içerir.
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 kimliği doğrulanmış ve istekteki verilere erişme yetkisine sahip olarak tanır. Sunucu tarafı JWT uygulama talimatları için Fleet Engine'in Temel Özellikleri bölümündeki JSON Web Jetonu verme bölümüne bakın.
Özellikle kargo takibi için JavaScript tüketici SDK'sı ile ilgili aşağıdakileri göz önünde bulundurun:- JSON Web jetonu yayınlamayla ilgili genel yönergeler
- Planlanmış görevler JWT kuralları
- Tüketici uygulaması için örnek jeton
İ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üresi bir dakika içinde dolacak.
Aksi takdirde JavaScript tüketici SDK'sı 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ının, iki alan içeren bir veri yapısı döndürmesi gerekir. Bu yapı, aşağıdaki gibi bir
Promise
içine sarılmalıdır:Bir dize
token
.expiresInSeconds
numarası. 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ı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/delivery_consumer/TRACKING_ID
Örnek: Kimlik doğrulama 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,
};
}