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üketicileriniz kargolarının 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:
Maps JavaScript API'yi etkinleştirme
Google Cloud Console'da, Fleet Engine örneğiniz için kullandığınız projede 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 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'e karşı kimlik doğrulamak ve yetkilendirmek için Uygulama Varsayılan Kimlik Bilgileri'ni kullanın.
- JWT'leri imzalamak için uygun bir hizmet hesabı kullanın. Fleet Engine Temel Bilgileri bölümündeki Fleet Engine hizmet hesabı rollerine bakın.
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ç sunucunuz, Fleet Engine'e erişim için web tabanlı uygulamanıza JSON web jetonları verebilmelidir. Web tabanlı uygulamanız, bu JWT'leri istekleriyle birlikte gönderir. Böylece Fleet Engine, istekleri kimliği doğrulanmış ve istekteki verilere erişim için yetkilendirilmiş olarak tanır. Sunucu tarafında JWT uygulama talimatları için Fleet Engine Essentials bölümündeki JSON Web Jetonları Verme başlıklı makaleyi inceleyin.
Özellikle, gönderileri izlemek için JavaScript Consumer SDK'sında aşağıdakileri göz önünde bulundurun:- JSON Web Jetonları yayınlamayla ilgili genel yönergeler
- Programlanmış görevler için JWT yönergeleri
- Tüketici uygulaması için örnek jeton
İstemci tarafı yetkilendirme
JavaScript Consumer SDK'yı kullandığınızda, yetkilendirme jetonu getirici kullanarak sunucudan jeton istenir. Aşağıdakilerden herhangi biri doğru olduğunda bu işlemi yapar:
Geçerli bir jeton yoktur. Örneğin, SDK yeni bir sayfa yüklemesinde alıcıyı çağırmadığında veya alıcı bir jetonla geri dönmediğinde bu durum oluşur.
Jetonun süresi doldu.
Jetonun kullanım süresinin dolmasına bir dakika kaldı.
Aksi takdirde, JavaScript Consumer SDK daha önce verilmiş 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, aşağıdaki gibi bir
Promiseiçine alınmış iki alanlı bir veri yapısı döndürmelidir:Bir dize
token.Bir sayı
expiresInSeconds. Jeton, getirilmesinden sonra bu süre içinde sona erer. Kimlik doğrulama jetonu alıcı, son kullanma zamanını saniye cinsinden, alma zamanından kitaplığa iletmelidir. Bu işlem, örnekte gösterildiği gibi yapılmalıdır.
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 getirici oluşturma
Aşağıdaki örneklerde, yetkilendirme jetonu getiren 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,
};
}