Google Health API เป็น API ใหม่ที่สร้างขึ้นตั้งแต่ต้นเพื่อให้นักพัฒนาแอป สามารถค้นหาข้อมูลผู้ใช้ Fitbit ได้ นี่ไม่ใช่แค่การอัปเดต แต่เป็นการเคลื่อนไหวเชิงกลยุทธ์ เพื่อให้มั่นใจว่าแอปของคุณจะปลอดภัย เชื่อถือได้ และพร้อมรับ ความก้าวหน้าด้านเทคโนโลยีสุขภาพในอนาคต API รองรับคอนโซลใหม่สำหรับ การลงทะเบียนแอป, การรองรับ Google OAuth 2.0, ประเภทข้อมูลใหม่, สคีมา ปลายทางใหม่ และรูปแบบการตอบกลับใหม่
คู่มือนี้ออกแบบมาเพื่อช่วยให้นักพัฒนาแอปย้ายข้อมูลแอป Fitbit Web API ที่มีอยู่ไปยัง Google Health API ใหม่
ทำไมคุณจึงควรย้ายข้อมูล
ข้อดีของการใช้ Google Health API มีดังนี้
- ความปลอดภัยที่ดียิ่งขึ้น: การปฏิบัติตามแนวทางปฏิบัติแนะนำด้านความปลอดภัยของ Google การปฏิบัติตามมาตรฐานด้านความปลอดภัย ความเป็นส่วนตัว และข้อมูลประจำตัวของ Google
- ความสอดคล้อง: ขจัดความไม่สอดคล้องเดิมในรูปแบบข้อมูล เขตเวลา หน่วยวัด และการจัดการข้อผิดพลาด เพื่อให้ประสบการณ์การใช้งานของนักพัฒนาแอปเป็นไปอย่างราบรื่นยิ่งขึ้น
- ความสามารถในการปรับขนาดและการเตรียมพร้อมสำหรับอนาคต: ออกแบบมาเพื่อปรับขนาดให้ตรงกับความต้องการในอนาคต และรองรับโปรโตคอลที่ทันสมัย เช่น gRPC
การลงทะเบียนแอป
แอป Google Health API ทั้งหมดต้องลงทะเบียนโดยใช้คอนโซล Google Cloud ซึ่งทำหน้าที่เป็นฮับกลาง สำหรับการจัดการแอป Google ทั้งหมด
ดูวิธีการลงทะเบียนแอปได้โดยทำตามขั้นตอนในการเริ่มต้นใช้งาน ข้อแตกต่างที่คุณจะสังเกตเห็นเมื่อลงทะเบียนแอปมีดังนี้
| Fitbit Web API | Google Health API | |
| ลิงก์สาธารณะ | https://dev.fitbit.com/apps | https://console.cloud.google.com |
| การเพิ่มแอปใหม่ | กดลงทะเบียนแอปใหม่ |
|
| ข้อมูลพื้นฐาน | ช่องที่ต้องกรอก
|
ช่องที่ต้องกรอก
|
| ประเภทแอปพลิเคชัน | นักพัฒนาแอปต้องเลือกตัวเลือกต่อไปนี้
|
|
| รหัสลูกค้า | ลงทะเบียนเมื่อบันทึกการตั้งค่าแอปพลิเคชัน | ลงทะเบียนแยกกัน |
| ประเภทการเข้าถึง | ระบบจะควบคุมสิทธิ์ในการอ่านและเขียนที่ระดับแอป | ระบบจะควบคุมสิทธิ์การอ่านและการเขียนที่ระดับขอบเขต |
| URL เพิ่มเติม |
|
|
การติดตั้งใช้งาน OAuth
แอป Google Health API รองรับเฉพาะไลบรารีของไคลเอ็นต์ Google OAuth2 ไลบรารีของไคลเอ็นต์พร้อมใช้งานสำหรับเฟรมเวิร์กยอดนิยม ซึ่งทำให้การใช้ OAuth 2.0 ง่ายขึ้น ความแตกต่างระหว่างไลบรารี Google OAuth2 กับไลบรารี OAuth2 แบบโอเพนซอร์สมีดังนี้
| Fitbit Web API | Google Health API | |
| รองรับไลบรารี OAuth2 | โอเพนซอร์ส | ไลบรารีไคลเอ็นต์ OAuth2 ของ Google |
| ฟังก์ชันการทำงาน | ไม่สอดคล้องกันในแพลตฟอร์มต่างๆ | สอดคล้องกันในทุกแพลตฟอร์ม |
| URL การให้สิทธิ์ | https://www.fitbit.com/oauth2/authorize | https://accounts.google.com/o/oauth2/v2/auth |
| URL โทเค็น | https://api.fitbit.com/oauth2/token | https://oauth2.googleapis.com/token |
| อายุการใช้งานของโทเค็นเพื่อการเข้าถึง | 8 ชั่วโมง | 1 ชั่วโมง |
| ขนาดโทเค็นเพื่อการเข้าถึง | 1024 ไบต์ | 2048 ไบต์ |
| รีเฟรชโทเค็น | ระบบจะสร้างโทเค็นการรีเฟรชเมื่อใช้ขั้นตอนการให้สิทธิ์รหัสการให้สิทธิ์ สร้างโทเค็นการรีเฟรชสำหรับผู้ใช้ได้เพียง 1 รายการ โทเค็นจะไม่มีวันหมดอายุและใช้ได้เพียงครั้งเดียว | หากต้องการสร้างโทเค็นการรีเฟรช สตริงการให้สิทธิ์ต้องมี พารามิเตอร์การค้นหา "access_type=offline" สร้างโทเค็นการรีเฟรชหลายรายการสำหรับผู้ใช้คนเดียวได้ โทเค็นการรีเฟรชอาจอิงตามเวลา โดยจะหมดอายุหากไม่มีการใช้งานภายใน 6 เดือน ผู้ใช้ให้สิทธิ์เข้าถึงตามเวลา หรือแอปอยู่ในโหมด "การทดสอบ" ดูรายละเอียดเพิ่มเติมได้ที่ การหมดอายุของโทเค็นการรีเฟรช |
| การตอบกลับของโทเค็น | การตอบกลับ JSON มีข้อมูลต่อไปนี้
|
การตอบกลับ JSON มีข้อมูลต่อไปนี้
หากต้องการรับรหัสผู้ใช้ ให้ใช้ปลายทาง users.getIdentity |
การตรวจสอบสิทธิ์ของผู้ใช้อีกครั้ง (การขอความยินยอมอีกครั้งที่จำเป็น)
ผู้ใช้ Fitbit ต้องให้ความยินยอมในการผสานรวมใหม่ของคุณอีกครั้ง เนื่องจากแอปของคุณ ใช้ไลบรารี OAuth ที่แตกต่างกัน คุณไม่สามารถโอนโทเค็นเพื่อการเข้าถึงและโทเค็นการรีเฟรชไปยัง Google Health API และใช้งานได้
ขอบเขต
คุณต้องอัปเดตคำขอการให้สิทธิ์เพื่อใช้ขอบเขต Google Health API ขอบเขตจะกำหนดว่าแอปของคุณรองรับการดำเนินการอ่านหรือเขียนหรือไม่ อย่าใช้ขอบเขตที่ไม่จำเป็นสำหรับแอปของคุณ คุณเพิ่มขอบเขต เพิ่มเติมได้ทุกเมื่อในภายหลังหากการออกแบบแอปมีการเปลี่ยนแปลง
ขอบเขต Google Health API คือ URL ของ HTTP ที่ขึ้นต้นด้วย https://www.googleapis.com/auth/googlehealth.{scope} เช่น https://www.googleapis.com/auth/googlehealth.activity_and_fitness
การแมปขอบเขต
ขอบเขต Fitbit Web API จะแมปกับขอบเขต Google Health API ดังนี้
| ขอบเขต Fitbit Web API | ขอบเขตของ Google Health API |
|---|---|
| กิจกรรม | .activity_and_fitness .activity_and_fitness.readonly |
| cardio_fitness | .activity_and_fitness .activity_and_fitness.readonly |
| อัตราการเต้นของหัวใจ | .health_metrics_and_measurements .health_metrics_and_measurements.readonly |
| สถานที่ | .location.readonly |
| โภชนาการ | .nutrition .nutrition.readonly |
| oxygen_saturation | .health_metrics_and_measurements .health_metrics_and_measurements.readonly |
| โปรไฟล์ | .profile .profile.readonly |
| respiratory_rate | .health_metrics_and_measurements .health_metrics_and_measurements.readonly |
| การตั้งค่า | .settings .settings.readonly |
| การนอนหลับ | .sleep .sleep.readonly |
| อุณหภูมิ | .health_metrics_and_measurements .health_metrics_and_measurements.readonly |
| น้ำหนัก | .health_metrics_and_measurements .health_metrics_and_measurements.readonly |
ประเภทข้อมูล
ต่อไปนี้คือรายการประเภทข้อมูลของ Google Health API และวิธีที่ประเภทข้อมูลเหล่านี้เชื่อมโยงกับ Fitbit Web API
| ประเภทข้อมูล Fitbit Web API | ประเภทข้อมูล Google Health API รหัสปลายทาง |
|---|---|
| นาทีในโซนแอ็กทีฟ | นาทีในโซนแอ็กทีฟactive-zone-minutes
|
| มีการเปลี่ยนแปลงระดับกิจกรรมของผู้ใช้ | ระดับกิจกรรมactivity-level
|
| ระดับความสูง | ระดับความสูงaltitude
|
| ไขมันร่างกาย | ไขมันในร่างกายbody-fat
|
caloriesOut ในแต่ละโซนอัตราการเต้นของหัวใจ |
แคลอรี่ในโซนอัตราการเต้นของหัวใจcalories-in-heart-rate-zone
|
| สรุป HRV | ความผันแปรของอัตราการเต้นของหัวใจรายวันdaily-heart-rate-variability
|
| สรุปค่า SpO2 | ความอิ่มตัวของออกซิเจนในเลือดรายวันdaily-oxygen-saturation
|
| อัตราการเต้นของหัวใจขณะพัก | อัตราการเต้นของหัวใจขณะพักประจำวันdaily-resting-heart-rate
|
| อุณหภูมิผิวหนัง | การหาค่าอุณหภูมิขณะนอนหลับในแต่ละวันdaily-sleep-temperature-derivations
|
| ระยะทาง | ระยะทางdistance
|
| กิจกรรมที่บันทึกไว้ | การออกกำลังกายexercise
|
| ชั้น | พื้นfloors
|
| อัตราการเต้นของหัวใจ | อัตราการเต้นของหัวใจheart-rate
|
| HRV ระหว่างวัน | ความผันแปรของอัตราการเต้นของหัวใจheart-rate-variability
|
| SpO2 ระหว่างวัน | ความอิ่มตัวของออกซิเจนoxygen-saturation
|
| ค่า VO2 Max เมื่อผู้ใช้วิ่ง | ปริมาณการใช้ออกซิเจนสูงสุดขณะวิ่งrun-vo2-max
|
| อนุกรมเวลาของกิจกรรม นาทีที่อยู่เฉยๆ | ระยะเวลาอยู่กับที่ไม่เคลื่อนไหวsedentary-period
|
| การนอนหลับ | การนอนหลับsleep
|
| ขั้นตอน | ขั้นตอนsteps
|
กิจกรรม caloriesOut |
แคลอรี่ทั้งหมดtotal-calories
|
| ค่าปริมาณการใช้ออกซิเจนสูงสุด | VO2 Maxvo2-max
|
| น้ำหนัก | น้ำหนักweight
|
ปลายทาง
ปลายทาง REST ใช้ไวยากรณ์ที่สอดคล้องกันสำหรับข้อมูลทุกประเภท
- ปลายทางของบริการ: URL ฐานของ HTTP เปลี่ยนเป็น https://health.googleapis.com
- ไวยากรณ์ของปลายทาง: Google Health API รองรับปลายทางจํานวนจํากัด ซึ่งประเภทข้อมูลที่รองรับส่วนใหญ่สามารถใช้ได้ ซึ่งจะช่วยให้มีไวยากรณ์ที่สอดคล้องกันสำหรับข้อมูลทุกประเภท และทำให้ใช้งานปลายทางได้ง่ายขึ้น
- ตัวระบุผู้ใช้: ควรระบุรหัสผู้ใช้หรือฉันใน ไวยากรณ์ของปลายทาง เมื่อใช้ฉัน ระบบจะอนุมาน User-ID จากโทเค็นการเข้าถึง
ตัวอย่าง: นี่คือตัวอย่างของปลายทาง GET Profile ที่เรียกใช้โดยใช้ Google Health API
GET https://health.googleapis.com/v4/users/me/profile
การแมปปลายทาง
ดูรายการประเภทข้อมูลที่มีและเมธอด API ที่รองรับได้ในตารางความพร้อมใช้งานของประเภทข้อมูล
| ประเภทปลายทางของ Fitbit Web API | Google Health API |
| GET (Log | Summary | Daily Summary) เมื่อคุณขอข้อมูลวันเดียว | เมธอด dailyRollup ที่มี windowSize = 1 วัน |
| GET (ระหว่างวัน) เมื่อคุณขอข้อมูลแบบละเอียด | เมธอด list |
| GET (อนุกรมเวลา) ตามวันที่หรือช่วงเวลา | เมธอด rollUp หรือ dailyRollUp รวมถึงช่วงวันที่ |
| GET (รายการบันทึก) | เมธอด list |
| สร้างและอัปเดตบันทึก | เมธอด patch |
| ลบบันทึก | เมธอด batchDelete |
| GET Profile | users.getProfile จะแสดงข้อมูลเฉพาะของผู้ใช้
users.getSettings จะแสดงหน่วยและเขตเวลาของผู้ใช้ |
| อัปเดตโปรไฟล์ | users.updateProfile จะแก้ไขข้อมูลที่เฉพาะเจาะจงของผู้ใช้
users.updateSettings จะแก้ไขหน่วยและเขตเวลาของผู้ใช้ |
| รับรหัสผู้ใช้ | users.getIdentity จะแสดงรหัสผู้ใช้ Fitbit รุ่นเดิมและรหัสผู้ใช้ Google ของผู้ใช้ |
ย้ายข้อมูลผู้ใช้
การย้ายข้อมูลจาก Fitbit Web API ไปยัง Google Health API เป็นมากกว่าการอัปเดตทางเทคนิค ผู้ใช้ต้องให้ความยินยอมอีกครั้งสำหรับการผสานรวมใหม่เนื่องจาก มีการเปลี่ยนแปลงไลบรารี OAuth คุณไม่สามารถโอนโทเค็นเพื่อการเข้าถึงและโทเค็นการรีเฟรช ไปยัง Google Health API และใช้งานได้ เรามีคำแนะนำด้านเทคนิคและเชิงกลยุทธ์บางอย่างที่จะช่วยให้การย้ายข้อมูลประสบความสำเร็จ เพื่อช่วยรักษาผู้ใช้ไว้ในระหว่างการย้ายข้อมูล
กลยุทธ์ห้องสมุดคู่
เนื่องจาก Fitbit Web API และ Google Health API ใช้ไลบรารี OAuth2 ที่แตกต่างกัน คุณจึงต้องจัดการช่วง "การเชื่อมต่อ" ที่ทั้ง 2 ไลบรารีมีอยู่ในโค้ดเบส
การจัดการการให้สิทธิ์แบบคู่ขนาน
- ห่อหุ้มไคลเอ็นต์: สร้างเลเยอร์หรืออินเทอร์เฟซการแยกส่วนสำหรับ "บริการด้านสุขภาพ" ซึ่งจะช่วยให้ส่วนอื่นๆ ของแอปขอข้อมูลได้ โดยไม่ต้องทราบว่าไลบรารีใด (Fitbit OAuth หรือ Google OAuth) ที่ ใช้งานอยู่สำหรับผู้ใช้รายนั้น
- การอัปเดตสคีมาฐานข้อมูล: อัปเดตตารางผู้ใช้ให้มีแฟล็ก
oauth_typeเช่น ใช้fitbitสำหรับ Fitbit OAuth และgoogleสำหรับ Google OAuth- ผู้ใช้ใหม่: ใช้ Google Health API และไลบรารี Google OAuth เป็นค่าเริ่มต้น
ตั้งค่า
oauth_typeเป็นgoogle - ผู้ใช้เดิม: ใช้ Fitbit Web API ต่อไปจนกว่าผู้ใช้จะทำตาม
ขั้นตอนการขอความยินยอมอีกครั้งเสร็จสมบูรณ์ ตั้งค่า
oauth_typeเป็นfitbit
- ผู้ใช้ใหม่: ใช้ Google Health API และไลบรารี Google OAuth เป็นค่าเริ่มต้น
ตั้งค่า
ขั้นตอนการขอความยินยอมอีกครั้งแบบ "Step-Up"
แทนที่จะบังคับให้ออกจากระบบ ให้ใช้แนวทางการให้สิทธิ์แบบค่อยเป็นค่อยไป
- ตรวจหาโทเค็นโอเพนซอร์สของ Fitbit: เมื่อผู้ใช้ Fitbit Web API เปิดแอป ให้ทริกเกอร์การแจ้งเตือน "การอัปเดตบริการ"
- เปิดใช้ขั้นตอนของ Google OAuth: เมื่อผู้ใช้คลิก "อัปเดต" ให้เริ่มขั้นตอนของไลบรารี Google OAuth2
- แทนที่และเพิกถอน: เมื่อได้รับโทเค็น Google OAuth เรียบร้อยแล้ว ให้บันทึกลงในโปรไฟล์ผู้ใช้ อัปเดต
oauth_typeจากfitbitเป็นgoogleและ (หากเป็นไปได้) เพิกถอนโทเค็นfitbitเก่าโดยอัตโนมัติเพื่อรักษาโปรไฟล์ความปลอดภัยของผู้ใช้ให้สะอาด
เพิ่มการคงผู้ใช้ไว้ให้ได้สูงสุด
การขอความยินยอมอีกครั้งคือ "จุดอันตราย" ที่ทำให้เกิดการเลิกใช้งาน หากต้องการป้องกันไม่ให้ผู้ใช้ทิ้งแอปกลางคัน ให้ทำตามแนวทางปฏิบัติแนะนำด้านประสบการณ์ของผู้ใช้ต่อไปนี้
การสื่อสารแบบ "เน้นคุณค่าเป็นอันดับแรก"
อย่าขึ้นต้นด้วย "เราได้อัปเดต API" ระบุข้อดีของระบบใหม่ที่ได้รับการสนับสนุนจาก Google ดังนี้
- การรักษาความปลอดภัยที่ดียิ่งขึ้น: กล่าวถึงการปกป้องบัญชีและ 2FA ที่เป็นผู้นำในอุตสาหกรรมของ Google
- ความน่าเชื่อถือ: เวลาในการซิงค์เร็วขึ้นและการเชื่อมต่อข้อมูลที่เสถียรมากขึ้น
- การจำกัดการเข้าถึงฟีเจอร์: แจ้งให้ผู้ใช้ทราบว่าฟีเจอร์ใหม่และ ประเภทข้อมูลใหม่ต้องมีการอัปเดต
การกำหนดเวลาอัจฉริยะ
- อย่าขัดจังหวะงานที่มีคุณค่าสูง: อย่าทริกเกอร์หน้าจอขอความยินยอมอีกครั้ง ขณะที่ผู้ใช้กำลังออกกำลังกายหรือบันทึกอาหาร
- ระยะ "กระตุ้น": ใช้แบนเนอร์ที่ปิดได้ในช่วง 30 วันแรก
- ระยะ "การหยุดให้บริการอย่างถาวร": บังคับให้ขอความยินยอมอีกครั้งหลังจากได้รับคำเตือนเป็นเวลาหลายสัปดาห์ ซึ่งตรงกับกำหนดเวลาการเลิกใช้งาน Fitbit Web API อย่างเป็นทางการ
การเปรียบเทียบขั้นตอนการย้ายข้อมูล
ความแตกต่างที่ชัดเจนระหว่างโฟลว์เก่าและโฟลว์ใหม่จะช่วยให้ นักพัฒนาแอปเข้าใจว่าตรรกะแยกออกเป็น 2 ทางตรงจุดใด
| ฟีเจอร์ | Fitbit Web API (เดิม) | Google Health API (Google-Identity) |
| ไลบรารีการตรวจสอบสิทธิ์ | โอเพนซอร์สมาตรฐาน | Google Identity Services (GIS) / Google Auth |
| บัญชีผู้ใช้ | ข้อมูลเข้าสู่ระบบเดิมของ Fitbit | บัญชี Google |
| ประเภทโทเค็น | การเข้าถึง / การรีเฟรชที่เฉพาะเจาะจงของ Fitbit | โทเค็นเพื่อการเข้าถึง/โทเค็นการรีเฟรชที่ Google ออกให้ |
| การจัดการขอบเขต | สิทธิ์แบบกว้าง | สิทธิ์แบบละเอียด / แบบเพิ่ม |
จัดการความแตกต่างของการย้ายข้อมูลบัญชี
ตามเอกสารประกอบของ Fitbit ผู้ใช้ที่ย้ายข้อมูลบัญชีไปยัง Google โดยทั่วไปจะไม่สูญเสียการเชื่อมต่อกับบุคคลที่สามในทันที แต่การเปลี่ยนเวอร์ชัน API เป็นข้อกำหนดฝั่งนักพัฒนาแอป
- ตรวจสอบความถูกต้องของโทเค็น: ใช้ Backgroundworker เพื่อตรวจสอบว่าโทเค็น Fitbit ทำงานล้มเหลวโดยมีข้อผิดพลาด "ไม่ได้รับอนุญาต" หรือไม่ ซึ่งอาจบ่งบอกว่าผู้ใช้ได้ย้ายข้อมูลบัญชีแล้ว แต่แอปของคุณยังไม่ได้อัปเดต
- การทำงานล้มเหลวอย่างราบรื่น: หากการเรียกใช้ Fitbit OAuth ล้มเหลว ให้เปลี่ยนเส้นทางผู้ใช้ ไปยังหน้า "เชื่อมต่อ Fitbit อีกครั้ง" ที่กำหนดเองซึ่งใช้โฟลว์ Google OAuth ใหม่โดยเฉพาะ
ตัวอย่างโค้ด
หากต้องการย้ายข้อมูลจาก Fitbit Web API เดิมไปยัง Google Health API คุณจะต้องเปลี่ยนจากไลบรารี OAuth2 ทั่วไปเป็นไลบรารีการตรวจสอบสิทธิ์ของ Google ต่อไปนี้คือ คำแนะนำด้านสถาปัตยกรรมและการใช้งานซูโดโค้ดที่เขียนด้วย JavaScript เพื่อจัดการสถานะ "Dual-Library" นี้
1. "การเปลี่ยนมิดเดิลแวร์"
เนื่องจากคุณไม่สามารถย้ายข้อมูลผู้ใช้ทั้งหมดได้ในครั้งเดียว แบ็กเอนด์จึงต้องพิจารณาว่าจะใช้ไลบรารีใดตามapiVersionปัจจุบันของผู้ใช้ที่จัดเก็บไว้ในฐานข้อมูล
การใช้งาน
const { OAuth2Client } = require('google-auth-library');
const FitbitV1Strategy = require('fitbit-oauth2-library').Strategy;
// 1. Initialize the Google Health API Client
const GHAClient = new OAuth2Client(
process.env.GOOGLE_CLIENT_ID,
process.env.GOOGLE_CLIENT_SECRET,
process.env.REDIRECT_URI
);
// 2. Create a Unified Fetcher
async function fetchSteps(user) {
if (user.apiVersion === 4) {
// ---- GOOGLE OAUTH LIBRARY LOGIC ----
GHAClient.setCredentials({ refresh_token: user.refreshToken });
const url = 'GET https://health.googleapis.com/v4/users/me/dataTypes/steps/dataPoints';
const res = await GHAClient.request({ url });
return res.data;
} else {
// ---- FITBIT WEB API LEGACY LOGIC ----
// Use your existing Fitbit open-source library logic here
return callLegacyV1Api(user.accessToken);
}
}
2. ย้ายข้อมูลโฟลว์ UX
หากต้องการเพิ่มการรักษาผู้ใช้ ให้ใช้รูปแบบ "ขัดจังหวะและอัปเกรด" ซึ่งจะช่วยให้ผู้ใช้ไม่ต้องบังคับให้เข้าสู่ระบบอีกครั้งจนกว่าจะมีการโต้ตอบกับแอป
ตรรกะการเปลี่ยนเส้นทาง
เมื่อผู้ใช้ Fitbit Web API ใช้ฟีเจอร์ที่เฉพาะเจาะจง ให้ทริกเกอร์การย้ายข้อมูลโดยทำดังนี้
app.get('/dashboard', async (req, res) => {
const user = await db.users.find(req.user.id);
if (user.apiVersion === 1) {
// Render a "soft" migration page explaining the Google transition
return res.render('migrate-to-google', {
title: "Keep your data syncing",
message: "Fitbit is moving to Google accounts. Re-connect now to stay updated."
});
}
const data = await fetchSteps(user);
res.render('dashboard', { data });
});
3. การเปลี่ยนแปลงทางเทคนิคที่สำคัญ
เมื่อเขียนสคริปต์การย้ายข้อมูล JavaScript โปรดคำนึงถึงความแตกต่างต่อไปนี้
| ฟีเจอร์ | Fitbit Web API (เดิม) | Google Health API (Google-Identity) |
| ปลายทางของโทเค็น | https://api.fitbit.com/oauth2/token | https://oauth2.googleapis.com/token |
| ไลบรารีการตรวจสอบสิทธิ์ | โอเพนซอร์สมาตรฐาน | Google Auth |
| ขอบเขต | กิจกรรม | https://www.googleapis.com/auth/googlehealth.activity_and_fitness |
| User ID | รหัสที่เข้ารหัสของ Fitbit ที่แสดงในการตอบกลับ /oauth2/token | รหัสผู้ใช้ที่ส่งคืนจากปลายทาง users.getIdentity |
4. รายการตรวจสอบการเก็บรักษา
- การคงอยู่ของเซสชัน: อย่าล้างเซสชัน Fitbit Web API เก่าของผู้ใช้จนกว่าจะยืนยัน access_token ของ Google Health API ได้สำเร็จและบันทึกลงในฐานข้อมูล
- การเพิกถอนอัตโนมัติ: เมื่อการย้ายข้อมูล Google Health API เสร็จสมบูรณ์แล้ว ให้ใช้คำขอ POST ไปยังปลายทางการเพิกถอน Fitbit เดิมที่ https://api.fitbit.com/oauth2/revoke ซึ่งจะช่วยให้ผู้ใช้ไม่เห็นสิทธิ์ของแอปที่ "ซ้ำกัน" ในการตั้งค่า Fitbit
- การจัดการข้อผิดพลาด: หากการเรียก Fitbit แสดงผลเป็น 401 Unauthorized ให้เปลี่ยนเส้นทางไปยังขั้นตอนการให้สิทธิ์ OAuth ของ Google โดยอัตโนมัติแทนที่จะแสดง ข้อความแสดงข้อผิดพลาด