ตั้งค่า Google Cloud และ OAuth

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

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

สร้างโปรเจ็กต์และไคลเอ็นต์ OAuth

ใช้ปุ่มเปิดใช้ API และรับรหัสไคลเอ็นต์ OAuth 2.0 เพื่อเปิดใช้ Google Health API และรับรหัสไคลเอ็นต์ OAuth 2.0 โดยทำดังนี้

  1. หากมีโปรเจ็กต์ Google Cloud อยู่แล้วและต้องการใช้กับ Google Health API ให้ตรวจสอบว่าคุณได้เข้าสู่ระบบบัญชีผู้ดูแลระบบของโปรเจ็กต์นั้นก่อน จากนั้นเลือกโปรเจ็กต์ที่มีอยู่จากรายการโปรเจ็กต์ที่พร้อมใช้งานหลังจากคลิกปุ่ม หรือสร้างโปรเจ็กต์ใหม่
  2. เลือกเว็บเซิร์ฟเวอร์เมื่อระบบถามว่า "คุณโทรจากที่ไหน"
  3. ป้อน https://www.google.com เป็นค่าสำหรับ URI การเปลี่ยนเส้นทางที่ได้รับอนุญาต ต้องระบุ URI การเปลี่ยนเส้นทางเพื่อรับรหัสการให้สิทธิ์โดยใช้ OAuth 2.0
  4. เมื่อตั้งค่าเสร็จแล้ว ให้คัดลอกค่ารหัสไคลเอ็นต์และรหัสลับไคลเอ็นต์ OAuth 2.0 แล้วดาวน์โหลด JSON ของข้อมูลเข้าสู่ระบบไปยังเครื่องของคุณ
เปิดใช้ API และรับรหัสไคลเอ็นต์ OAuth 2.0

หากต้องการตั้งค่าโปรเจ็กต์ Google Cloud ด้วยตนเอง หรือยืนยัน การตั้งค่าและดึงข้อมูลเข้าสู่ระบบอีกครั้ง ให้ทำดังนี้

  1. เปิดใช้ Google Health API ในหน้าการเปิดใช้ API
  2. รับรหัสไคลเอ็นต์ OAuth 2.0 ในหน้าข้อมูลเข้าสู่ระบบ

ดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่า OAuth 2.0 โดยใช้คอนโซล Google ได้ที่การใช้ OAuth 2.0 เพื่อเข้าถึง Google APIs

ใช้โปรเจ็กต์แยกกันสำหรับการทดสอบและการใช้งานจริง

Google Health API ไม่มีแซนด์บ็อกซ์หรือสภาพแวดล้อมการจัด เตรียมแยกต่างหาก สภาพแวดล้อมทั้งหมดของคุณจะเรียกใช้ Google Health API เวอร์ชันที่ใช้งานจริง ดังนั้น คุณจึงจัดการการแยกสภาพแวดล้อมที่ระดับโปรเจ็กต์ Google Cloud ได้

เมื่อตั้งค่าสภาพแวดล้อมสำหรับแอป ให้ทำตามแนวทางปฏิบัติแนะนำต่อไปนี้

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

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

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

อัปเดตรายชื่อผู้ใช้ทดสอบในหน้ากลุ่มเป้าหมาย

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

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

เพิ่มขอบเขต

คุณต้องระบุขอบเขตที่ไคลเอ็นต์ได้รับอนุญาตให้เรียกใช้ในหน้าการเข้าถึงข้อมูล

  1. ในหน้านี้ ให้คลิกเพิ่มหรือนำขอบเขตออก
  2. ในคอลัมน์ API ให้ค้นหา "Google Health API" เลือกขอบเขตที่คุณ ต้องการสำหรับแอปพลิเคชัน
  3. หลังจากเลือกขอบเขตทั้งหมดที่ต้องการแล้ว ให้คลิกอัปเดตเพื่อกลับไปที่หน้า การเข้าถึงข้อมูล
  4. คลิกบันทึก

โปรดอ่านการใช้งานขอบเขตก่อนเลือกขอบเขต

คุณตั้งค่ารหัสไคลเอ็นต์เสร็จแล้ว และตอนนี้ควรจะเรียกใช้ Google Health API ได้

อัปเดตขอบเขต

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

หากต้องการเพิ่มหรือเปลี่ยนขอบเขตโดยใช้พารามิเตอร์ prompt=consent ให้ทำตามขั้นตอนต่อไปนี้

  1. ระบุรายการขอบเขตทั้งหมดที่แอปพลิเคชันของคุณต้องการ ซึ่งควรรวมทั้งขอบเขตที่มีอยู่และขอบเขตใหม่ที่คุณ ต้องเพิ่ม

  2. แก้ไขพารามิเตอร์ขอบเขตใน URL การให้สิทธิ์เพื่อรวมรายการค่าขอบเขตที่อัปเดตแล้วซึ่งคั่นด้วยช่องว่าง

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

    ตัวอย่างต่อไปนี้แสดงคำขอ HTTPS GET ไปยังปลายทางการให้สิทธิ์ OAuth 2.0 ของ Google ซึ่งขอขอบเขตหลายรายการโดยมี prompt=consent ต่อท้าย

    https://accounts.google.com/o/oauth2/v2/auth?client_id=client-id&redirect_uri=redirect-uri&response_type=code&access_type=offline&scope=https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly%20https://www.googleapis.com/auth/googlehealth.sleep.readonly&prompt=consent
  4. เมื่อผู้ใช้คลิกลิงก์ที่อัปเดตแล้ว ระบบจะแสดงหน้าความยินยอมที่แสดงขอบเขตที่ขอทั้งหมด เมื่อผู้ใช้คลิก "ต่อไป" หรือ "อนุญาต" คุณจะได้รับรหัสการให้สิทธิ์ใหม่ที่สามารถแลกเปลี่ยน เป็นโทเค็นที่ครอบคลุมขอบเขตทั้งหมด

    ใส่ prompt=consent เฉพาะเมื่อจำเป็น เช่น เมื่อคุณต้องการ รับโทเค็นการรีเฟรชใหม่ หรือเมื่อขอบเขตที่ขอมีการเปลี่ยนแปลง

ไลบรารีของไคลเอ็นต์ OAuth2

ดูรายการไลบรารีของไคลเอ็นต์ OAuth2 ที่พร้อมใช้งานซึ่งใช้เพื่อผสานรวมกับเฟรมเวิร์กยอดนิยมได้ที่ การใช้ OAuth 2.0 เพื่อเข้าถึง Google APIs

เมื่อใช้ Google OAuth ในแอปบนอุปกรณ์เคลื่อนที่หรือเดสก์ท็อป ให้ใช้เบราว์เซอร์ของระบบเสมอ (เช่น Chrome Custom Tabs ใน Android หรือ ASWebAuthenticationSession ใน iOS) และอย่าใช้ WebView แบบฝังซึ่งจะบล็อกพาสคีย์และทำให้โฟลว์ Google OAuth หยุดทำงาน ดูคำแนะนำได้ที่แนวทางปฏิบัติแนะนำในการลงชื่อเข้าใช้ด้วย Google

ก่อนที่ผู้ใช้จะเข้าสู่ขั้นตอนการขอความยินยอมของ Google OAuth 2.0 ในแอปของคุณ ผู้ใช้ต้องลงชื่อเข้าใช้แอป Google Health บนอุปกรณ์เคลื่อนที่เพื่อลิงก์ Google Health กับบัญชี Google ของตน Google OAuth 2.0 จะตรวจสอบสิทธิ์บัญชี Google ที่ถูกต้องและ ไม่สามารถตรวจสอบว่าบัญชีมีโปรไฟล์ Google Health ที่ใช้งานอยู่หรือไม่ในระหว่าง หน้าจอขอความยินยอม

แนะนําให้ผู้ใช้ทําตามขั้นตอนต่อไปนี้ในแอป Google Health บนอุปกรณ์เคลื่อนที่ ก่อนเริ่มโฟลว์ขอความยินยอม OAuth ในแอป

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

หลังจากแลกรหัสการให้สิทธิ์เป็นโทเค็น OAuth แล้ว ให้เรียกใช้ปลายทาง users.getIdentity (GET https://health.googleapis.com/v4/users/me/identity) เพื่อยืนยันว่าบัญชี Google ของผู้ใช้ลิงก์กับ Google Health ก่อนที่จะทำเครื่องหมายบัญชีว่าเชื่อมต่อแล้วในแอป สำหรับรายละเอียดเกี่ยวกับการจัดการบัญชีที่ไม่ได้ลิงก์ (400 ACCOUNT_NOT_LINKED) โปรดดูจัดการบัญชี Google ที่ไม่ได้ลิงก์

รีเฟรชโทเค็น

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

หากต้องการแลกเปลี่ยนโทเค็นการรีเฟรชเป็นโทเค็นเพื่อการเข้าถึง ให้เรียกใช้ HTTPS POST ไปยังปลายทางโทเค็น Google OAuth 2.0 ข้อมูลโค้ดต่อไปนี้แสดงตัวอย่างคำขอและการตอบกลับ

ส่งคำขอ

curl -L -X POST 'https://oauth2.googleapis.com/token' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'client_id=client-id&client_secret=client-secret&refresh_token=refresh-token&grant_type=refresh_token'

คำตอบ

{
  "access_token": "access-token",
  "expires_in": 3599,
  "scope": "scope-list",
  "token_type": "Bearer",
  "refresh_token": "refresh-token",
  "refresh_token_expires_in": 112154
}

กรณีที่ควรต่ออายุโทเค็น

รีเฟรชโทเค็นตามต้องการซึ่งเป็นส่วนหนึ่งของความคืบหน้าตามปกติของเซสชันที่ใช้งานอยู่ของผู้ใช้ เมื่อโทเค็นเพื่อการเข้าถึงหมดอายุหรือใกล้หมดอายุ หลีกเลี่ยงการรีเฟรชโทเค็นเป็นชุด (เช่น ใช้cronงานหรือบริการที่กำหนดเวลาไว้เพื่อรีเฟรชโทเค็นสำหรับผู้ใช้ทั้งหมดในเวลาที่แน่นอน)

ไม่แนะนำให้รีเฟรชโทเค็นเป็นชุดด้วยเหตุผลต่อไปนี้

  • การรีเฟรชแบบเป็นชุดจะช่วยป้องกันไม่ให้การอัปเดตโทเค็นสอดคล้องกับรูปแบบการซิงค์ผู้ใช้ที่ใช้งานอยู่ แม้ว่าคุณจะใช้การเรียก Get Devices เพื่อดูเวลาซิงค์ล่าสุดของผู้ใช้ได้ แต่การดำเนินการนี้ต้องใช้ขอบเขต OAuth เพิ่มเติม ซึ่งผู้ใช้ไม่มีภาระหน้าที่ต้องอนุมัติ
  • การประมวลผลแบบกลุ่มจะอัปเดตโทเค็นที่ไม่จำเป็นต้องรีเฟรช ซึ่งทำให้เกิดค่าใช้จ่ายในการประมวลผลที่ซ้ำซ้อนทั้งในระบบของคุณและเซิร์ฟเวอร์ของ Google
  • หากเกิดปัญหาเกี่ยวกับเครือข่ายหรือเซิร์ฟเวอร์หยุดทำงานระหว่างการรีเฟรชแบบเป็นกลุ่ม โทเค็นผู้ใช้ที่ได้รับผลกระทบทั้งหมดจะได้รับผลกระทบพร้อมกัน การรีเฟรชโทเค็นทีละรายการ ในระหว่างการซิงค์ผู้ใช้ตามปกติจะจำกัดผลกระทบของ ความล้มเหลวชั่วคราวไว้ที่ผู้ใช้รายเดียว
  • การวินิจฉัยปัญหาจะยากขึ้นเมื่อใช้ Batch Job เนื่องจากคำขอแบบกลุ่ม เกิดขึ้นไม่บ่อยนักและสร้างรายการบันทึกจำนวนมากพร้อมกัน จึงระบุจุดเริ่มต้นของเหตุการณ์ได้ยากขึ้น
  • การเพิ่มขึ้นของคำขอโทเค็นพร้อมกันจำนวนมากระหว่างการเรียกใช้แบบเป็นชุดจะเพิ่ม โอกาสที่จะเกินขีดจำกัดอัตราหรือพบข้อผิดพลาดในการตรวจสอบสิทธิ์เป็นระยะๆ

ลักษณะการทำงานของโทเค็นระหว่างการทดสอบ

โปรดทราบว่าโทเค็นการรีเฟรชจะทำงานอย่างไรโดยขึ้นอยู่กับสถานะการเผยแพร่ของโปรเจ็กต์ Google Cloud

  • โหมดทดสอบ: หากกำหนดค่าหน้าจอขอความยินยอม OAuth ด้วยสถานะการเผยแพร่ "การทดสอบ" โทเค็นการรีเฟรชที่ออกจะมีอายุตามเวลาและจะหมดอายุหลังจากผ่านไป 7 วัน ในช่วงนี้ คุณจะได้รับโทเค็นการรีเฟรชรายการเดียวที่ยังคงใช้ได้และใช้เพื่อรับโทเค็นเพื่อการเข้าถึงใหม่ได้จนกว่าจะถึงวันที่หมดอายุ
  • โหมดที่เผยแพร่: เมื่อย้ายแอปไปที่สถานะ "ใช้งานจริง" โดยทั่วไปแล้ว Refresh Token จะไม่มีวันหมดอายุ เว้นแต่จะถูกเพิกถอนหรือไม่มีการใช้งาน เป็นเวลานาน (โดยปกติคือ 6 เดือน)

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

สร้างข้อมูลตัวอย่าง

Google ไม่ได้ให้ข้อมูลสุขภาพตัวอย่างหรือจำลองที่กรอกไว้ล่วงหน้า หากต้องการทดสอบการผสานรวม คุณต้องสร้างข้อมูลทดสอบของคุณเอง ใช้วิธีใดวิธีหนึ่งต่อไปนี้เพื่อสร้างข้อมูลตัวอย่างสำหรับผู้ใช้ทดสอบ

  • สวมเครื่องติดตาม: สวมเครื่องติดตาม Fitbit, Pixel Watch หรือสมาร์ทวอทช์อื่นๆ ที่ ใช้ได้กับแอป Google Health แล้วเดินไปมาเพื่อสร้างข้อมูลจำนวนก้าว อัตราการเต้นของหัวใจ และการออกกำลังกาย
  • เปิดใช้การติดตามบนอุปกรณ์เคลื่อนที่: เปิดใช้ MobileTrack ในแอป Google Health แล้วเดินไปมาพร้อมกับอุปกรณ์เคลื่อนที่
  • บันทึกข้อมูลด้วยตนเอง: ป้อนตัวชี้วัดสุขภาพด้วยตนเอง (เช่น การนอนหลับ น้ำหนัก ปริมาณน้ำ หรือปริมาณอาหารที่รับประทาน) ผ่านแอป Google Health
  • เขียนข้อมูลโดยใช้ API: ส่งคำขอเขียน (เช่น POST หรือ PATCH) ไปยังอุปกรณ์ปลายทาง REST API โดยตรงเพื่อป้อนข้อมูล แบบเป็นโปรแกรม ดูรายละเอียดเพิ่มเติมเกี่ยวกับการสร้างและอัปเดตจุดข้อมูลได้ที่เอกสารอ้างอิง REST

การป้องกันแบบครอบคลุมหลายบริการ (RISC API)

เปิดใช้การแชร์และการประสานงานความเสี่ยงและเหตุการณ์ (RISC) หากต้องการรับการแจ้งเตือนเกี่ยวกับการเปลี่ยนแปลงโทเค็นเหตุการณ์หรือการลิงก์บัญชี เช่น บัญชีที่ยกเลิกการเชื่อมต่อหรือโทเค็นที่ถูกเพิกถอน เพื่อล้างโทเค็นที่จัดเก็บไว้และอัปเดตสถานะการเชื่อมต่อ UI คุณจะเปิดใช้ RISC API หรือไม่ก็ได้

วิธีเปิดใช้ RISC API สำหรับโปรเจ็กต์ Google Cloud

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

หลังจากเปิดใช้ API แล้ว คุณต้องสร้างและลงทะเบียนปลายทาง HTTPS เพื่อ รับและตรวจสอบโทเค็นเหตุการณ์ที่ Google ส่ง

ดูข้อมูลเพิ่มเติมเกี่ยวกับการป้องกันแบบครอบคลุมหลายบริการและ RISC ได้ที่ ปกป้องบัญชีผู้ใช้ด้วยการป้องกันแบบครอบคลุมหลายบริการ