使用 OAuth2 Playground 發出第一個 Google Health API 呼叫

1. 簡介

OAuth 2.0 Playground 是一項網頁式工具,可協助您測試 Google OAuth 2.0 流程,不必編寫任何程式碼。本程式碼研究室將說明如何設定 Google Cloud 雲端專案、取得憑證、使用 OAuth 2.0 Playground 啟動授權流程,以及首次呼叫其中一個 Google Health API 端點。

課程內容

  • 瞭解如何在 Google Cloud 控制台中設定用戶端 ID。
  • 瞭解如何使用 OAuth 2.0 Playground,完成 Google OAuth 2.0 授權流程,取得存取權杖和更新權杖。
  • 如何使用 OAuth 2.0 Playground 呼叫 Google Health API 端點。

軟硬體需求

如要設定 Fitbit 行動應用程式,請按照下列步驟操作:

  1. 在 Apple App Store 或 Google Play 商店中搜尋並下載 Fitbit 行動應用程式。
  2. 選取應用程式圖示。
  3. 點選 [Sign in with Google] (使用 Google 帳戶登入)
  4. 選取 Google 帳戶,然後按下「繼續」按鈕。

2. 設定 Google Cloud 專案

您將使用 Google Cloud 控制台建立用戶端 ID,並啟用 Google Health API。

  1. 登入 Google Cloud 控制台
  2. 如要建立新專案,請按照下列步驟操作:
    1. 在專案挑選器中,按一下「選取專案」
    2. 選取右上角的「新專案」
    3. 輸入專案名稱
    4. 輸入位置 (例如「無機構」)。
    5. 按一下 [建立] 按鈕。
    6. 選取專案。

啟用 Google Health API

  1. 按一下左上角的選單圖示:選單
  2. 選取「API 和服務」>「程式庫」
  3. 搜尋「Google Health API」並啟用。

設定 OAuth 憑證

如果不在 Google Cloud 控制台中,請前往 Google Cloud 控制台

  1. 按一下左上角的選單圖示:選單
  2. 依序選取「API 和服務」>「憑證」
  3. 在畫面中央上方,依序選取「+ 建立憑證」>「OAuth 用戶端 ID」
  4. 按一下「設定同意畫面」按鈕。如果畫面顯示「尚未設定 Google 驗證平台」訊息,請按一下「開始使用」按鈕。
  5. 第 1 節:
    1. 輸入應用程式名稱
    2. 輸入「使用者支援電子郵件地址」
    3. 按一下 [Next] 按鈕。
  6. 第 2 節:
    1. 選取「外部」
    2. 按一下 [Next] 按鈕。
  7. 在第 3 節中:
    1. 在「聯絡資訊」欄位中輸入電子郵件地址。
    2. 按一下 [Next] 按鈕。
  8. 第 4 節:
    1. 勾選核取方塊,表示同意《Google API 服務:使用者資料政策》。
    2. 按一下 [建立] 按鈕。
  9. 依序前往「API 和服務」>「憑證」,然後選取「+ 建立憑證」>「OAuth 用戶端 ID」
  10. 選擇「網頁應用程式」應用程式類型。
  11. 輸入用戶端 ID 名稱
  12. 將「已授權的 JavaScript 來源」留空。
  13. 在「已授權的重新導向 URI」下方,點按「+ 新增 URI」,然後新增下列 URI:
    • https://www.google.com
    • https://developers.google.com/oauthplayground
  14. 按一下 [建立] 按鈕。
  15. Google 控制台會顯示訊息,指出已建立用戶端 ID。按一下「Download JSON」(下載 JSON) 連結,下載用戶端 ID 和用戶端密鑰,或記下這些值。之後就無法復原用戶端密鑰。
  16. 按一下「確定」。系統會將您帶回「OAuth 2.0 用戶端 ID」頁面。
  17. 系統會將用戶端 ID 新增至專案。按一下用戶端 ID 網址即可查看詳細資料。

新增測試使用者

  1. 選取左側窗格中的「目標對象」。您應該會看到「發布狀態」設為「測試」,而「使用者類型」設為「外部」
  2. 在「測試使用者」部分下方,按一下「+ 新增使用者」按鈕。輸入要擷取資料的使用者電子郵件地址。
  3. 按一下 [儲存] 按鈕。

為用戶端 ID 新增範圍

  1. 選取左側窗格中的「資料存取權」
  2. 按一下「新增或移除範圍」按鈕。
  3. 在「API」欄中搜尋「Google Health API」。在本程式碼研究室中,我們使用 .../auth/googlehealth.activity_and_fitness.readonly 範圍
  4. 選取範圍後,按下「更新」按鈕返回「資料存取」頁面。
  5. 按一下 [儲存] 按鈕。

您已完成設定用戶端 ID。

3. 在 Fitbit 行動應用程式中新增資料

如果你是 Fitbit 新使用者,Fitbit 帳戶中可能沒有資料可供查詢。我們將手動新增運動記錄,並透過其中一個端點查詢。如要手動記錄運動,請按照下列步驟操作:

  1. 在裝置上開啟 Fitbit 行動應用程式。視需要登入 Fitbit 帳戶。
  2. 輕觸畫面右下角的「+」按鈕。
  3. 在「手動記錄」部分中,輕觸「活動」
  4. 搜尋並選取「步行」運動類型。
  5. 輸入今天的開始時間
  6. 將時間長度變更為 15 分鐘
  7. 將距離設為 1.0 英里
  8. 輕觸「新增」
  9. 長按畫面並向下滑動,將行動應用程式與 Fitbit 伺服器同步。放開手指後,行動應用程式應該會開始同步。
  10. 在「活動」部分中,應該會看到手動記錄的「步行」項目。顯示步行活動的螢幕截圖。

4. 在 OAuth 2.0 Playground 中授權

前往 OAuth 2.0 Playground

Google Health API 規定您必須在 Playground 中使用自己的 OAuth 憑證。

  1. 按一下右上方的「OAuth 2.0 設定」齒輪圖示。
  2. 選取「使用自己的 OAuth 憑證」
  3. 輸入您在設定 Google 雲端專案時取得的 OAuth 用戶端 IDOAuth 用戶端密鑰

Playground 介面分為三個主要步驟,我們會依序說明:

  1. 選取並授權 API
  2. 交換授權碼以取得權杖
  3. 傳送要求至 API

選取並授權 API

您可以在這裡選擇要要求的 API 範圍。

  1. 在「步驟 1」中,找出 API 清單中的「Google Health API v4」並展開。
  2. 選取「https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly」。如果清單中未顯示所需範圍,您可以在「Input your own scopes」(輸入自己的範圍) 欄位中手動輸入。
  3. 按一下「Authorize APIs」
  4. 系統會將要求傳送至 Google 的 OAuth 2.0 授權端點,並在要求中加入所選範圍,然後將您重新導向至 Google 帳戶同意畫面。
  5. 使用您在「設定 Google Cloud 專案」一節中設定的測試使用者帳戶登入 (如果尚未登入)。
  6. 查看要求的權限,然後按一下 繼續 授予存取權。

您同意後,Google 會將您重新導向 Playground,並提供授權碼給工具,供下一個步驟使用。

右側的「Request / Response」面板會顯示完整的 HTTP 重新導向流程。

初始授權要求的回應是 302 Found 重新導向:

HTTP/1.1 302 Found
Location: https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=https%3A%2F%2Fdevelopers.google.com%2Foauthplayground&prompt=consent&response_type=code&client_id=your_client_id&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fgooglehealth.activity_and_fitness.readonly&access_type=offline

重新導向回 Playground 的要求會包含授權碼:

GET /oauthplayground/?iss=https://accounts.google.com&code=authorization_code&scope=https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly HTTP/1.1
Host: developers.google.com

授權碼是英數字值,以 GET 要求網址中 code=&scope 之間的 authorization_code 表示。在本範例中,這個值類似於:4/0AbPOj...

交換授權碼以取得權杖

在這個步驟中,系統會將程式碼換成權杖,讓您提出 API 要求。

完成「選取及授權 API」後,Playground 會自動填入授權碼欄位。如要兌換成權杖,請按照下列步驟操作:

  1. 在「步驟 2」中,按一下「Exchange authorization code for tokens」按鈕。
  2. 右側的「Request/Response」面板會顯示 access_tokenrefresh_token

畫面會顯示類似下列內容的回應:

{
  "access_token": "ya29.a0AFH6S....",
  "refresh_token_expires_in": 604799,
  "expires_in": 3599,
  "token_type": "Bearer",
  "scope": "https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly",
  "refresh_token": "1/og..."
}

關於更新權杖

交換授權碼時,除了 access_token,回應也可能包含 refresh_tokenaccess_token的效期很短 (通常為 1 小時)。access_token 過期時,您必須使用 refresh_token 取得新的 access_token,不必要求使用者再次登入或同意。這是因為我們在授權要求中加入了 access_type=offline

如果回覆中沒有 refresh_token,可能是因為您已同意這項應用程式和範圍。通常只有在使用者首次授予應用程式同意聲明時,或是在授權網址中加入 prompt=consent,強制顯示同意畫面 (即使是後續授權也一樣),才會核發重新整理權杖。

refresh_token 的效期很長,但如果 6 個月未使用、使用者撤銷應用程式的存取權,或基於其他原因,就會過期或失效。請妥善儲存 refresh_token,以供日後使用。

5. 傳送要求至 API

現在,您可以使用存取權杖向 Google Health API 發出要求。在 Playground 的「步驟 3」中,指定「要求 URI」、「HTTP 方法」、標頭和要求內容,設定 HTTP 要求。

  1. 將「HTTP Method」設為「GET」
  2. 將「Request URI」(要求 URI) 設為 https://health.googleapis.com/v4/users/me/dataTypes/exercise/dataPoints
  3. 按一下「傳送要求」

回應內容應與下方類似:

{
  "dataPoints": [
    {
      "name": "users/2515055256096816351/dataTypes/exercise/dataPoints/8896720705097069096",
      "dataSource": {
        "recordingMethod": "MANUAL",
        "platform": "FITBIT"
      },
      "exercise": {
        "interval": {
          "startTime": "2026-02-23T13:10:00Z",
          "startUtcOffset": "-18000s",
          "endTime": "2026-02-23T13:25:00Z",
          "endUtcOffset": "-18000s"
        },
        "exerciseType": "WALKING",
        "metricsSummary": {
          "caloriesKcal": 16,
          "distanceMillimiters": 1609344,
          "steps": "2038",
          "averagePaceSecondsPerMeter": 0.55923407301360051,
          "activeZoneMinutes": "0"
        },
        "exerciseMetadata": {},
        "displayName": "Walk",
        "activeDuration": "900s",
        "exerciseEvents": [
          {
            "eventTime": "2026-02-23T13:10:00Z",
            "eventUtcOffset": "-18000s",
            "exerciseEventType": "START"
          },
          {
            "eventTime": "2026-02-23T13:25:00Z",
            "eventUtcOffset": "-18000s",
            "exerciseEventType": "STOP"
          }
        ],
        "updateTime": "2026-02-24T01:19:22.450466Z"
      }
    },
    {
      "name": "users/2515055256096816351/dataTypes/exercise/dataPoints/5870930690409355408",
      "dataSource": {
        "recordingMethod": "MANUAL",
        "platform": "FITBIT"
      },
      "exercise": {
        "interval": {
          "startTime": "2026-02-23T06:00:00Z",
          "startUtcOffset": "-18000s",
          "endTime": "2026-02-23T06:15:00Z",
          "endUtcOffset": "-18000s"
        },
        "exerciseType": "WALKING",
        "metricsSummary": {
          "caloriesKcal": 17,
          "distanceMillimiters": 1609344,
          "steps": "2038",
          "averagePaceSecondsPerMeter": 0.55923407301360051,
          "averageHeartRateBeatsPerMinute": "81",
          "activeZoneMinutes": "0",
          "heartRateZoneDurations": {
            "lightTime": "900s"
          }
        },
        "exerciseMetadata": {},
        "displayName": "Walk",
        "activeDuration": "900s",
        "exerciseEvents": [
          {
            "eventTime": "2026-02-23T06:00:00Z",
            "eventUtcOffset": "-18000s",
            "exerciseEventType": "START"
          },
          {
            "eventTime": "2026-02-23T06:15:00Z",
            "eventUtcOffset": "-18000s",
            "exerciseEventType": "STOP"
          }
        ],
        "updateTime": "2026-02-23T08:29:39.480437Z"
      }
    }
  ],
  "nextPageToken": ""
}

許多端點都支援用於篩選或分頁的查詢參數。舉例來說,如要列出特定時間範圍內的運動,請變更要求 URI,加入篩選器參數:

https://health.googleapis.com/v4/users/me/dataTypes/exercise/dataPoints?filter=exercise.interval.civil_start_time >= "2026-02-22T00:00:00"

再次點按「傳送要求」,即可查看篩選結果。

6. 恭喜

恭喜!

您已完成基本程式碼實驗室,並成功學會如何使用 OAuth2 Playground 測試 OAuth 2.0 授權,以及呼叫 Google Health API 端點。

希望您能順利建構與 Google Health API 生態系統整合的應用程式。如要瞭解詳情,請參閱參考文件中的其他 Google Health API 端點,並進一步瞭解網路伺服器應用程式適用的 Google OAuth 2.0。