JavaScript Consumer SDK をセットアップする

JavaScript Consumer SDK を使用すると、アプリで使用するユーザーの Fleet Engine で追跡された車両やその他の関心のある場所(ウェブベースで 表示されます。これにより、消費者ユーザーは配送の進捗状況を確認できます。このガイドでは、Fleet Engine と関連付けられた Google Cloud プロジェクトと API キーが設定されていることを前提としています。詳細については、Fleet Engine をご覧ください。

JavaScript Consumer SDK は次の手順で設定します。

  1. Maps JavaScript API を有効化します。
  2. 認可を設定します

Maps JavaScript API を有効にする

使用する Google Cloud コンソール プロジェクトで Maps JavaScript API を有効にする Fleet Engine インスタンスに対して 課金されます詳しくは、Maps JavaScript API ドキュメントの API を有効にするをご覧ください。

認可を設定する

信頼性の低い環境からの API メソッド呼び出しの場合、Fleet Engine では、適切なサービス アカウントによって署名された JSON Web Token(JWT)を使用する必要があります。信頼性の低い環境には、スマートフォンやブラウザが含まれます。JWT は、完全に信頼できる環境であるサーバー上で生成されます。JWT 署名、暗号化され、後続のサーバーのためにクライアントに渡されます。 インタラクションは、期限切れになるか無効になります。

バックエンドでは、次のコマンドを使用して Fleet Engine に対する認証と認可を行う必要があります。 標準のアプリケーションのデフォルト認証情報メカニズムを使用します。適切なサービス アカウントで署名された JWT を使用してください。サービス アカウントのロールの一覧については、Fleet Engine の基本Fleet Engine サービス アカウントのロールをご覧ください。

コンシューマ アプリは、Google Cloud プロジェクトの delivery_consumer ロールを使用してエンドユーザーを認証し、コンシューマ固有の情報のみを返す必要があります。このようにして、Fleet Engine はすべての その他の情報を回答に含めます。たとえば、使用不能なタスク中は、 位置情報がエンドユーザーと共有されることはありません。サービス アカウント スケジュール設定されたタスク用のロールが必要です。

一方、バックエンドは、標準のアプリケーションのデフォルト認証情報メカニズムを使用して、Fleet Engine に対して認証と承認を行う必要があります。

認可の仕組み

Fleet Engine データによる認証には、サーバーサイドとクライアントサイドの両方の実装が含まれます。

サーバーサイド認可

ウェブベースの バックエンド サーバーが JSON Web Token を発行でき、 Fleet Engine にアクセスするためのウェブベースのアプリケーションです。ウェブベースのアプリケーションは、これらの JWT をリクエストとともに送信します。これにより、Fleet Engine はリクエストが認証済みであり、リクエスト内のデータにアクセスする権限があることを認識します。サーバーサイドの JWT の実装手順については、Issue JSON Web サイトをご覧ください。 トークンは [Fleet Engine Essentials] で確認できます。

特に、配送状況を追跡するための JavaScript Consumer SDK については、次の点に注意してください。

クライアントサイドの認可

JavaScript Consumer SDK を使用すると、認可トークン取得ツールを使用してサーバーからトークンがリクエストされます。次のいずれかに該当する場合は、この処理が行われます。

  • 有効なトークンが存在しない場合(SDK がフェッチャーを フェッチャーからトークンが返されなかった場合に返されるメッセージです。

  • トークンの有効期限が切れています。

  • トークンの有効期限は 1 分以内です。

それ以外の場合、JavaScript Consumer SDK は以前に発行された有効なトークンを使用し、フェッチャーを呼び出しません。

認証トークン取得ツールを作成する

次のガイドラインに従って認証トークン フェッチャーを作成します。

  • フェッチャーは、2 つのフィールドを含むデータ構造を返す必要があります。次のように Promise でラップします。

    • 文字列 token

    • 数値 expiresInSeconds。トークンは取得後、この時間の経過後に期限切れになります。認証トークン取得ツールは、例に示すように、取得からライブラリへの経過時間を秒単位で渡す必要があります。

  • フェッチャーは、サーバーの URL を呼び出してトークンを取得する必要があります。この URL(SERVER_TOKEN_URL)は、バックエンドの実装によって異なります。次の URL の例は、GitHub のサンプルアプリ バックエンドのものです。

    • https://SERVER_URL/token/delivery_consumer/TRACKING_ID

例 - 認証トークン フェッチャーを作成する

次の例は、認可トークン取得ツールを作成する方法を示しています。

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,
  };
}

次のステップ