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 端點。
軟硬體需求
- Google 帳戶
- Fitbit 行動應用程式
- OAuth 2.0 Playground
如要設定 Fitbit 行動應用程式,請按照下列步驟操作:
- 在 Apple App Store 或 Google Play 商店中搜尋並下載 Fitbit 行動應用程式。
- 選取應用程式圖示。
- 點選 [Sign in with Google] (使用 Google 帳戶登入)。
- 選取 Google 帳戶,然後按下「繼續」按鈕。
2. 設定 Google Cloud 專案
您將使用 Google Cloud 控制台建立用戶端 ID,並啟用 Google Health API。
- 登入 Google Cloud 控制台。
- 如要建立新專案,請按照下列步驟操作:
- 在專案挑選器中,按一下「選取專案」。
- 選取右上角的「新專案」。
- 輸入專案名稱。
- 輸入位置 (例如「無機構」)。
- 按一下 [建立] 按鈕。
- 選取專案。
啟用 Google Health API
- 按一下左上角的選單圖示:

- 選取「API 和服務」>「程式庫」。
- 搜尋「Google Health API」並啟用。
設定 OAuth 憑證
如果不在 Google Cloud 控制台中,請前往 Google Cloud 控制台。
- 按一下左上角的選單圖示:

- 依序選取「API 和服務」>「憑證」。
- 在畫面中央上方,依序選取「+ 建立憑證」>「OAuth 用戶端 ID」。
- 按一下「設定同意畫面」按鈕。如果畫面顯示「尚未設定 Google 驗證平台」訊息,請按一下「開始使用」按鈕。
- 第 1 節:
- 輸入應用程式名稱。
- 輸入「使用者支援電子郵件地址」。
- 按一下 [Next] 按鈕。
- 第 2 節:
- 選取「外部」。
- 按一下 [Next] 按鈕。
- 在第 3 節中:
- 在「聯絡資訊」欄位中輸入電子郵件地址。
- 按一下 [Next] 按鈕。
- 第 4 節:
- 勾選核取方塊,表示同意《Google API 服務:使用者資料政策》。
- 按一下 [建立] 按鈕。
- 依序前往「API 和服務」>「憑證」,然後選取「+ 建立憑證」>「OAuth 用戶端 ID」。
- 選擇「網頁應用程式」應用程式類型。
- 輸入用戶端 ID 名稱。
- 將「已授權的 JavaScript 來源」留空。
- 在「已授權的重新導向 URI」下方,點按「+ 新增 URI」,然後新增下列 URI:
https://www.google.comhttps://developers.google.com/oauthplayground
- 按一下 [建立] 按鈕。
- Google 控制台會顯示訊息,指出已建立用戶端 ID。按一下「Download JSON」(下載 JSON) 連結,下載用戶端 ID 和用戶端密鑰,或記下這些值。之後就無法復原用戶端密鑰。
- 按一下「確定」。系統會將您帶回「OAuth 2.0 用戶端 ID」頁面。
- 系統會將用戶端 ID 新增至專案。按一下用戶端 ID 網址即可查看詳細資料。
新增測試使用者
- 選取左側窗格中的「目標對象」。您應該會看到「發布狀態」設為「測試」,而「使用者類型」設為「外部」。
- 在「測試使用者」部分下方,按一下「+ 新增使用者」按鈕。輸入要擷取資料的使用者電子郵件地址。
- 按一下 [儲存] 按鈕。
為用戶端 ID 新增範圍
- 選取左側窗格中的「資料存取權」。
- 按一下「新增或移除範圍」按鈕。
- 在「API」欄中搜尋「Google Health API」。在本程式碼研究室中,我們使用
.../auth/googlehealth.activity_and_fitness.readonly範圍 - 選取範圍後,按下「更新」按鈕返回「資料存取」頁面。
- 按一下 [儲存] 按鈕。
您已完成設定用戶端 ID。
3. 在 Fitbit 行動應用程式中新增資料
如果你是 Fitbit 新使用者,Fitbit 帳戶中可能沒有資料可供查詢。我們將手動新增運動記錄,並透過其中一個端點查詢。如要手動記錄運動,請按照下列步驟操作:
- 在裝置上開啟 Fitbit 行動應用程式。視需要登入 Fitbit 帳戶。
- 輕觸畫面右下角的「+」按鈕。
- 在「手動記錄」部分中,輕觸「活動」。
- 搜尋並選取「步行」運動類型。
- 輸入今天的開始時間。
- 將時間長度變更為 15 分鐘。
- 將距離設為 1.0 英里。
- 輕觸「新增」。
- 長按畫面並向下滑動,將行動應用程式與 Fitbit 伺服器同步。放開手指後,行動應用程式應該會開始同步。
- 在「活動」部分中,應該會看到手動記錄的「步行」項目。

4. 在 OAuth 2.0 Playground 中授權
Google Health API 規定您必須在 Playground 中使用自己的 OAuth 憑證。
- 按一下右上方的「OAuth 2.0 設定」齒輪圖示。
- 選取「使用自己的 OAuth 憑證」。
- 輸入您在設定 Google 雲端專案時取得的 OAuth 用戶端 ID 和 OAuth 用戶端密鑰。
Playground 介面分為三個主要步驟,我們會依序說明:
- 選取並授權 API
- 交換授權碼以取得權杖
- 傳送要求至 API
選取並授權 API
您可以在這裡選擇要要求的 API 範圍。
- 在「步驟 1」中,找出 API 清單中的「Google Health API v4」並展開。
- 選取「
https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly」。如果清單中未顯示所需範圍,您可以在「Input your own scopes」(輸入自己的範圍) 欄位中手動輸入。 - 按一下「Authorize APIs」。
- 系統會將要求傳送至 Google 的 OAuth 2.0 授權端點,並在要求中加入所選範圍,然後將您重新導向至 Google 帳戶同意畫面。
- 使用您在「設定 Google Cloud 專案」一節中設定的測試使用者帳戶登入 (如果尚未登入)。
- 查看要求的權限,然後按一下 繼續 授予存取權。
您同意後,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 會自動填入授權碼欄位。如要兌換成權杖,請按照下列步驟操作:
- 在「步驟 2」中,按一下「Exchange authorization code for tokens」按鈕。
- 右側的「Request/Response」面板會顯示 access_token 和 refresh_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_token。access_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 要求。
- 將「HTTP Method」設為「GET」。
- 將「Request URI」(要求 URI) 設為
https://health.googleapis.com/v4/users/me/dataTypes/exercise/dataPoints。 - 按一下「傳送要求」。
回應內容應與下方類似:
{
"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。