JavaScript Consumer SDK を使用すると、コンシューマ アプリで、Fleet Engine で追跡された車両の位置情報やその他の興味 / 関心のある場所をウェブベースの地図に表示できます。これにより、ユーザーはドライバーのルートの進行状況を確認できます。このガイドでは、関連する Google Cloud プロジェクトと API キーを使用して Fleet Engine を設定していることを前提としています。詳細については、Fleet Engine をご覧ください。
JavaScript Consumer SDK は次の手順で設定します。
- Maps JavaScript API を有効化
- 認可を設定する
Maps JavaScript API を有効にする
Google Cloud コンソールで Maps JavaScript API を有効にします。詳細については、Google Cloud ドキュメントの API の有効化をご覧ください。これにより、JavaScript 向けコンシューマ SDK が有効になります。
認可を設定する
低信頼環境からの API メソッド呼び出しの場合、Fleet Engine では、適切なサービス アカウントで署名された JSON Web Token(JWT)を使用する必要があります。信頼性の低い環境には、スマートフォンやブラウザが含まれます。JWT は、完全に信頼できる環境であるサーバー上で生成されます。JWT は署名され、暗号化されて、有効期限が切れるか無効になるまで、その後のサーバー インタラクションのためにクライアントに渡されます。
バックエンドでは、標準のアプリケーションのデフォルト認証情報のメカニズムを使用して、Fleet Engine に対する認証と認可を行う必要があります。適切なサービス アカウントで署名された JWT を使用してください。サービス アカウントのロールのリストについては、Fleet Engine の基本の Fleet Engine サービス アカウントのロールをご覧ください。
これに対して、バックエンドでは、標準のアプリケーションのデフォルト認証情報のメカニズムを使用して Fleet Engine に対する認証と認可を行う必要があります。
認証の仕組み
Fleet Engine データによる認可には、サーバー側とクライアント側の両方の実装が含まれます。
サーバーサイド認可
ウェブベースのアプリケーションで認証と承認を設定する前に、バックエンド サーバーが、Fleet Engine にアクセスするためにウェブベースのアプリケーションに JSON Web Token を発行できる必要があります。ウェブベースのアプリケーションがこれらの JWT をリクエストとともに送信するため、Fleet Engine はリクエスト内のデータへのアクセスが認証および承認済みであると認識します。サーバーサイドの JWT 実装の手順については、Fleet Engine の基本の JSON Web Token を発行するをご覧ください。
特に、JavaScript Consumer SDK で移動状況を共有する際は、次の点に注意してください。- JSON Web Token の発行に関する一般的なガイドライン
- オンデマンド ルートの JWT ガイドライン
- コンシューマ オペレーション用のトークンの例
クライアントサイド認証
JavaScript Consumer SDK を使用すると、認可トークン取得ツールを使用してサーバーからトークンがリクエストされます。これは、次のいずれかに該当する場合に行われます。
有効なトークンが存在しない場合(SDK が新しいページ読み込みでフェッチャーを呼び出していない場合や、フェッチャーがトークンで返していない場合など)。
トークンの有効期限が切れています。
トークンの有効期限が 1 分以内である。
それ以外の場合、JavaScript Consumer SDK は以前に発行された有効なトークンを使用し、フェッチャーを呼び出しません。
認証トークン取得ツールを作成する
次のガイドラインに従って認証トークン フェッチャーを作成します。
フェッチャーは、2 つのフィールドを含むデータ構造を返す必要があります。次のように
Promise
でラップします。文字列
token
。数値
expiresInSeconds
。トークンは、取得後この時間の経過後に期限切れになります。認証トークン取得ツールは、例に示すように、取得からライブラリへの経過時間(秒単位)を渡す必要があります。
フェッチャーは、サーバー上の URL を呼び出す必要があります。この URL(
SERVER_TOKEN_URL
)は、バックエンドの実装によって異なります。次の URL の例は、GitHub のサンプルアプリ バックエンドのものです。https://SERVER_URL/token/consumer/TRIPID
例 -- 認証トークン フェッチャーを作成する
次の例は、認証トークン フェッチャーの作成方法を示しています。
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,
};
}