使用 OAuth

Routes API 支援使用 OAuth 2.0 進行驗證。Google 支援常見的 OAuth 2.0 使用情境,例如網路伺服器的這類使用情境。

本文件說明如何在開發環境環境中將 OAuth 權杖傳送至 Routes API 呼叫。如需在實際工作環境環境中使用 OAuth 的操作說明,請參閱「Google 的驗證」。

事前準備

您必須擁有已連結帳單帳戶的專案,並啟用 Routes API,才能開始使用 Routes API。建議您建立多個專案擁有者和帳單管理員,這樣您的團隊隨時都有擔任這些角色的成員可處理相關事務。請參閱這篇文章,進一步瞭解如何在 Cloud 控制台中完成相關設定。

關於 OAuth

根據您的部署環境,使用 OAuth 建立及管理存取權杖的方法有很多種。

舉例來說,Google OAuth 2.0 系統支援伺服器對伺服器的互動,例如應用程式和 Google 服務之間的互動。在這種情況下,您需要一個屬於應用程式的帳戶,而非個別使用者的帳戶。應用程式會代表服務帳戶呼叫 Google API,因此使用者不會直接參與。如要進一步瞭解驗證方法,請參閱「Google 的驗證」一文。

或者,您也可以在 Android 或 iOS 行動應用程式中使用 Routes API。如需將 OAuth 與 Routes API 搭配使用的一般資訊,包括如何管理不同部署環境的存取權杖的資訊,請參閱使用 OAuth 2.0 存取 Google API

關於 OAuth 範圍

如要搭配使用 OAuth 與 Routes API,必須將 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 要求

在這個範例中,您要傳送兩個要求標頭:

  • 使用下列指令產生權杖,在 Authorization 標頭中傳遞 OAuth 權杖:

    gcloud auth application-default print-access-token

    傳回的權杖範圍是 https://www.googleapis.com/auth/cloud-platform.

  • 請在 X-Goog-User-Project 標頭中,傳遞已啟用帳單功能的 Google Cloud 專案 ID 或名稱。請參閱這篇文章,進一步瞭解如何在 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 不支援使用者憑證,請參閱使用者憑證無法運作一文。