OAuth を使用する

Routes API では、認証に OAuth 2.0 を使用できます。Google は、ウェブサーバーなどで一般的な OAuth 2.0 のシナリオをサポートしています。

このドキュメントでは、開発環境で Routes API 呼び出しに OAuth トークンを渡す方法について説明します。本番環境で OAuth を使用する手順については、Google での認証をご覧ください。

始める前に

Routes API を使用するには、請求先アカウントと Routes API が有効なプロジェクトが必要です。複数のプロジェクト オーナーと課金管理者を作成し、これらの役割をチーム内の誰かが必ず担えるようにすることをおすすめします。詳しくは、Google Cloud Console でセットアップするをご覧ください。

OAuth について

OAuth を使用してアクセス トークンを作成および管理するには、デプロイ環境に応じてさまざまな方法があります。

たとえば、Google OAuth 2.0 システムは、アプリケーションと Google サービスの間のようなサーバー間のやり取りをサポートしています。このシナリオでは、サービス アカウント(個々のエンドユーザーではなくアプリケーションに属するアカウント)が必要です。アプリケーションがサービス アカウントに代わって Google API を呼び出すため、ユーザーが直接関与することはありません。認証方法の詳細については、Google での認証をご覧ください。

または、Android または iOS モバイルアプリの一部として Routes API を使用することもできます。さまざまなデプロイ環境用のアクセス トークンの管理など、Routes API での OAuth の使用に関する一般的な情報については、OAuth 2.0 を使用した Google API へのアクセスをご覧ください。

OAuth スコープについて

Routes API で OAuth を使用するには、OAuth トークンにスコープを割り当てる必要があります。

  • https://www.googleapis.com/auth/cloud-platform

例: ローカル開発環境で REST API 呼び出しを試す

OAuth トークンを使用して Routes API を試したいが、トークンを生成する環境を設定していない場合は、このセクションの手順に沿って呼び出します。

この例では、アプリケーションのデフォルト認証情報(ADC)によって提供される OAuth トークンを使用して呼び出しを行う方法について説明します。ADC を使用してクライアント ライブラリを使用して Google API を呼び出す方法については、クライアント ライブラリを使用して認証するをご覧ください。

前提条件

ADC を使用して REST リクエストを行う前に、Google Cloud CLI を使用して ADC に認証情報を指定します。

  1. まだ行っていない場合は、Google Cloud コンソールでの設定の手順に沿ってプロジェクトを作成し、課金を有効にします。
  2. gcloud CLI をインストールして初期化します
  3. ローカルマシンで次の gcloud コマンドを実行して、認証情報ファイルを作成します。

    gcloud auth application-default login
  4. ログイン画面が表示されます。ログインすると、ADC で使用されるローカル認証情報ファイルに認証情報が保存されます。

詳細については、アプリケーションのデフォルト認証情報に認証情報を提供するドキュメントのローカル開発環境セクションをご覧ください。

REST リクエストを行う

この例では、2 つのリクエスト ヘッダーを渡します。

  • 次のコマンドを使用して OAuth トークンを Authorization ヘッダーで渡し、トークンを生成します。

    gcloud auth application-default print-access-token

    返されるトークンのスコープは https://www.googleapis.com/auth/cloud-platform. です。

  • 課金が有効になっている Google Cloud プロジェクトの ID または名前を X-Goog-User-Project ヘッダーで渡します。詳しくは、Cloud コンソールでのセットアップをご覧ください。

次の例では、OAuth トークンを使用して Routes API を呼び出します。

curl -X POST -d '{
  "origin":{
    "location":{
      "latLng":{
        "latitude": 37.419734,
        "longitude": -122.0827784
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude": 37.417670,
        "longitude": -122.079595
      }
    }
  },
  "travelMode": "DRIVE",
}' \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
-H "X-Goog-FieldMask: routes.duration,routes.distanceMeters" \
"https://routes.googleapis.com/directions/v2:computeRoutes"

トラブルシューティング

リクエストから、この API でサポートされていないエンドユーザー認証情報に関するエラー メッセージが返される場合は、ユーザー認証情報が機能しないをご覧ください。