ทำการเรียก Google Health API ครั้งแรกโดยใช้ OAuth2 Playground

1. บทนำ

OAuth 2.0 Playground เป็นเครื่องมือบนเว็บที่จะช่วยให้คุณทดสอบขั้นตอนของ Google OAuth 2.0 ได้โดยไม่ต้องเขียนโค้ด Codelab นี้จะแสดงวิธีตั้งค่าโปรเจ็กต์ Google Cloud, รับข้อมูลเข้าสู่ระบบ, เริ่มต้นขั้นตอนการให้สิทธิ์ด้วย OAuth 2.0 Playground และทำการเรียกครั้งแรกไปยังปลายทาง Google Health API รายการใดรายการหนึ่ง

สิ่งที่คุณจะได้เรียนรู้

  • วิธีตั้งค่ารหัสไคลเอ็นต์ภายในคอนโซล Google Cloud
  • วิธีดำเนินการตามขั้นตอนการให้สิทธิ์ Google OAuth 2.0 เพื่อรับโทเค็นเพื่อการเข้าถึงและโทเค็นการรีเฟรชโดยใช้ OAuth 2.0 Playground
  • วิธีเรียกใช้ปลายทางของ Google Health API โดยใช้ OAuth 2.0 Playground

สิ่งที่คุณต้องมี

วิธีตั้งค่าแอป Fitbit บนมือถือ

  1. ค้นหาแอป Fitbit บนอุปกรณ์เคลื่อนที่ใน Apple App Store หรือ Google Play Store แล้วดาวน์โหลด
  2. เลือกไอคอนแอป
  3. คลิกลงชื่อเข้าใช้ด้วย Google
  4. เลือกบัญชี Google แล้วกดปุ่มดำเนินการต่อ

2. ตั้งค่าโปรเจ็กต์ Google Cloud

คุณจะใช้ Google Cloud Console เพื่อสร้างรหัสไคลเอ็นต์และเปิดใช้ 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
  4. คลิกปุ่มกำหนดค่าหน้าจอคำยินยอม หากข้อความ "ยังไม่ได้กำหนดค่าแพลตฟอร์ม Google Auth" ปรากฏขึ้น ให้คลิกปุ่มเริ่มต้นใช้งาน
  5. ในส่วนที่ 1 ให้ทำดังนี้
    1. ป้อนชื่อแอป
    2. ป้อนอีเมลสนับสนุนสำหรับผู้ใช้
    3. คลิกปุ่มถัดไป
  6. ในส่วนที่ 2
    1. เลือกภายนอก
    2. คลิกปุ่มถัดไป
  7. ในส่วนที่ 3
    1. ป้อนอีเมลในช่องข้อมูลติดต่อ
    2. คลิกปุ่มถัดไป
  8. ในส่วนที่ 4
    1. คลิกช่องทําเครื่องหมายเพื่อยอมรับนโยบายข้อมูลผู้ใช้ของบริการ API ของ Google
    2. คลิกที่ปุ่มสร้าง
  9. ไปที่ API และบริการ > ข้อมูลเข้าสู่ระบบ แล้วเลือก + สร้างข้อมูลเข้าสู่ระบบ > รหัสไคลเอ็นต์ OAuth
  10. เลือกประเภทแอปพลิเคชันเป็นเว็บแอปพลิเคชัน
  11. ป้อนชื่อรหัสลูกค้า
  12. เว้นว่างต้นทางของ JavaScript ที่ได้รับอนุญาต
  13. ในส่วน URI การเปลี่ยนเส้นทางที่ได้รับอนุญาต ให้คลิก + เพิ่ม URI แล้วเพิ่ม URI ต่อไปนี้
    • https://www.google.com
    • https://developers.google.com/oauthplayground
  14. คลิกที่ปุ่มสร้าง
  15. Google Console จะแสดงข้อความว่าสร้างรหัสไคลเอ็นต์แล้ว คลิกลิงก์ดาวน์โหลด JSON เพื่อดาวน์โหลดรหัสไคลเอ็นต์และรหัสลับไคลเอ็นต์ หรือจดค่าไว้ คุณจะกู้คืนข้อมูลลับของไคลเอ็นต์ในภายหลังไม่ได้
  16. คลิกตกลง คุณจะกลับไปที่หน้า "รหัสไคลเอ็นต์ OAuth 2.0"
  17. ระบบจะเพิ่มรหัสไคลเอ็นต์ลงในโปรเจ็กต์ คลิก URL รหัสไคลเอ็นต์เพื่อดูรายละเอียด

เพิ่มผู้ใช้ทดสอบ

  1. เลือกกลุ่มเป้าหมายในแผงด้านซ้าย คุณควรเห็น "สถานะการเผยแพร่" ตั้งค่าเป็นทดสอบ และ "ประเภทผู้ใช้" ตั้งค่าเป็นภายนอก
  2. ในส่วน "ผู้ใช้ทดสอบ" ให้คลิกปุ่ม + เพิ่มผู้ใช้ ป้อนอีเมลของผู้ใช้ที่คุณต้องการดึงข้อมูล
  3. คลิกปุ่มบันทึก

เพิ่มขอบเขตไปยังรหัสไคลเอ็นต์

  1. เลือกการเข้าถึงข้อมูลในแผงด้านซ้าย
  2. คลิกปุ่มเพิ่มหรือนำขอบเขตออก
  3. ในคอลัมน์ API ให้ค้นหา "Google Health API" สำหรับ Codelab นี้ เราจะใช้ขอบเขต .../auth/googlehealth.activity_and_fitness.readonly
  4. หลังจากเลือกขอบเขตแล้ว ให้กดปุ่มอัปเดตเพื่อกลับไปที่หน้าการเข้าถึงข้อมูล
  5. คลิกปุ่มบันทึก

คุณตั้งค่ารหัสไคลเอ็นต์เสร็จแล้ว

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 กำหนดให้คุณใช้ข้อมูลเข้าสู่ระบบ OAuth ของคุณเองกับ Playground

  1. คลิกไอคอนรูปเฟืองการกำหนดค่า OAuth 2.0 ที่ด้านขวาบน
  2. เลือกใช้ข้อมูลเข้าสู่ระบบ OAuth ของคุณเอง
  3. ป้อนรหัสไคลเอ็นต์ OAuth และรหัสลับไคลเอ็นต์ OAuth ที่คุณได้รับในระหว่างการตั้งค่าโปรเจ็กต์ Google Cloud

อินเทอร์เฟซ Playground แบ่งออกเป็น 3 ขั้นตอนหลักที่เราจะทำตาม ดังนี้

  1. เลือกและให้สิทธิ์ API
  2. เปลี่ยนรหัสการให้สิทธิ์เป็นโทเค็น
  3. ส่งคำขอไปยัง API

เลือกและให้สิทธิ์ API

คุณเลือกขอบเขต API ที่ต้องการขอได้ที่นี่

  1. ในขั้นตอนที่ 1 ให้ค้นหา Google Health API v4 ในรายการ API แล้วขยาย
  2. เลือก https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly หากขอบเขตที่คุณต้องการไม่แสดงในรายการ คุณสามารถป้อนขอบเขตด้วยตนเองในช่อง "ป้อนขอบเขตของคุณเอง"
  3. คลิกให้สิทธิ์ API
  4. ระบบจะส่งคำขอไปยังปลายทางการให้สิทธิ์ OAuth 2.0 ของ Google โดยจะรวมขอบเขตที่เลือกไว้ในคำขอ จากนั้นระบบจะเปลี่ยนเส้นทางคุณไปยังหน้าจอความยินยอมของบัญชี Google
  5. ลงชื่อเข้าใช้ด้วยบัญชีผู้ใช้ทดสอบที่คุณกำหนดค่าไว้ในส่วนตั้งค่าโปรเจ็กต์ Google Cloud (หากยังไม่ได้ลงชื่อเข้าใช้)
  6. ตรวจสอบสิทธิ์ที่ขอ แล้วคลิกดำเนินการต่อเพื่อให้สิทธิ์เข้าถึง

เมื่อคุณให้ความยินยอม Google จะเปลี่ยนเส้นทางคุณกลับไปที่ Playground และให้รหัสการให้สิทธิ์แก่เครื่องมือ ซึ่งจะใช้ในขั้นตอนถัดไป

แผงคำขอ / คำตอบทางด้านขวาจะแสดงขั้นตอนการเปลี่ยนเส้นทาง 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

รหัสการให้สิทธิ์คือค่าที่เป็นตัวอักษรและตัวเลขซึ่งแสดงด้วย authorization_code ระหว่าง code= และ &scope ใน URL ของคำขอ GET ในตัวอย่างนี้ ค่าจะคล้ายกับ 4/0AbPOj...

เปลี่ยนรหัสการให้สิทธิ์เป็นโทเค็น

ในขั้นตอนนี้ ระบบจะแลกรหัสเป็นโทเค็นที่อนุญาตให้คุณส่งคำขอ API

หลังจากทำขั้นตอนเลือกและให้สิทธิ์ API เสร็จแล้ว Playground จะป้อนข้อมูลในช่องรหัสการให้สิทธิ์โดยอัตโนมัติ วิธีแลกเป็นโทเค็น

  1. คลิกปุ่มเปลี่ยนรหัสการให้สิทธิ์ของโทเค็นในขั้นตอนที่ 2
  2. 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..."
}

เกี่ยวกับโทเค็นการรีเฟรช

เมื่อแลกเปลี่ยนรหัสการให้สิทธิ์ คำตอบอาจมี refresh_token นอกเหนือจาก access_token access_token มีอายุการใช้งานสั้น (โดยปกติคือ 1 ชั่วโมง) เมื่อ access_token หมดอายุ คุณต้องใช้ refresh_token เพื่อรับ access_token ใหม่โดยไม่ต้องให้ผู้ใช้ลงชื่อเข้าใช้หรือให้ความยินยอมอีกครั้ง เราทำเช่นนี้ได้เนื่องจากได้รวม access_type=offline ไว้ในคำขอการให้สิทธิ์

หากไม่ได้รับ refresh_token ในการตอบกลับ อาจเป็นเพราะคุณได้ให้ความยินยอมสำหรับแอปและขอบเขตนี้แล้ว โดยปกติแล้ว ระบบจะออกโทเค็นการรีเฟรชเมื่อผู้ใช้ให้ความยินยอมสำหรับแอปของคุณเป็นครั้งแรกเท่านั้น หรือเมื่อมีการเพิ่ม prompt=consent ลงใน URL การให้สิทธิ์เพื่อบังคับให้หน้าจอคำยินยอมปรากฏขึ้นแม้ในการให้สิทธิ์ครั้งต่อๆ ไป

refresh_tokenมีอายุการใช้งานยาวนาน แต่จะหมดอายุหรือใช้ไม่ได้หากไม่มีการใช้งานเป็นเวลา 6 เดือน หากผู้ใช้เพิกถอนสิทธิ์เข้าถึงแอปของคุณ หรือด้วยเหตุผลอื่นๆ คุณควรจัดเก็บ refresh_token อย่างปลอดภัยเพื่อใช้ในอนาคต

เกี่ยวกับการอัปเดตขอบเขต

หากแอปพลิเคชันของคุณต้องการเข้าถึงขอบเขต Google Health API เพิ่มเติมในภายหลัง คุณต้องแจ้งให้ผู้ใช้ให้สิทธิ์แอปอีกครั้งและขอชุดขอบเขตทั้งหมด (ทั้งที่มีอยู่และใหม่)

วิธีอัปเดตขอบเขตในคำขอการให้สิทธิ์ของแอปพลิเคชัน

  1. ระบุรายการขอบเขตทั้งหมดที่แอปพลิเคชันของคุณต้องการ
  2. แก้ไขพารามิเตอร์ scope ใน URL การให้สิทธิ์ให้มีรายการค่าขอบเขตที่อัปเดตซึ่งคั่นด้วยช่องว่าง
  3. ต่อท้าย prompt=consent พารามิเตอร์ URI การตรวจสอบสิทธิ์ เมื่อรวม prompt=consent ไว้ด้วย หน้าจอขอความยินยอมจะแสดงทุกครั้งที่แอปขอการให้สิทธิ์ขอบเขต ซึ่งจะแจ้งให้ผู้ใช้อนุมัติรายการที่อัปเดต

เมื่อผู้ใช้ให้ความยินยอมเสร็จสมบูรณ์ คุณจะได้รับรหัสการให้สิทธิ์ใหม่ที่สามารถแลกเปลี่ยนเป็นโทเค็นซึ่งครอบคลุมขอบเขตทั้งหมด

5. ส่งคำขอไปยัง API

ตอนนี้คุณสามารถใช้โทเค็นเพื่อเข้าถึงเพื่อส่งคำขอไปยัง Google Health API ได้แล้ว ในขั้นตอนที่ 3 ใน Playground ให้กำหนดค่าคำขอ HTTP โดยระบุ URI คำขอ, เมธอด HTTP, ส่วนหัว และเนื้อหาของคำขอ

  1. ตั้งค่าเมธอด HTTP เป็น GET
  2. ตั้งค่า 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. ขอแสดงความยินดี

ยินดีด้วย

คุณได้ทำ Codelab พื้นฐานเสร็จสมบูรณ์แล้ว และได้เรียนรู้วิธีใช้ OAuth2 Playground เพื่อทดสอบการให้สิทธิ์ OAuth 2.0 และทำการเรียกไปยังปลายทางของ Google Health API เรียบร้อยแล้ว

เราหวังว่าคุณจะสนุกกับการสร้างแอปที่ผสานรวมกับระบบนิเวศของ Google Health API ดูข้อมูลเพิ่มเติมได้ที่ปลายทางอื่นๆ ของ Google Health API ในเอกสารอ้างอิง และดูข้อมูลเพิ่มเติมเกี่ยวกับ Google OAuth 2.0 สำหรับแอปพลิเคชันเว็บเซิร์ฟเวอร์