डेटा माइग्रेट करने से जुड़ी गाइड

Google Health API, एक नया एपीआई है. इसे शुरू से बनाया गया है. इससे डेवलपर, Fitbit के उपयोगकर्ता के डेटा के बारे में क्वेरी कर सकते हैं. यह सिर्फ़ एक अपडेट नहीं है, बल्कि एक रणनीतिक फ़ैसला है. इससे यह पक्का किया जा सकेगा कि आपके ऐप्लिकेशन सुरक्षित और भरोसेमंद हैं. साथ ही, स्वास्थ्य से जुड़ी टेक्नोलॉजी में होने वाली आने वाली तरक्की के लिए तैयार हैं. यह एपीआई, ऐप्लिकेशन रजिस्टर करने के लिए नई कंसोल, Google OAuth 2.0 की सुविधा, नए डेटा टाइप, नए एंडपॉइंट स्कीमा, और नए जवाब फ़ॉर्मैट के साथ काम करता है.

इस गाइड को इसलिए बनाया गया है, ताकि डेवलपर अपने मौजूदा Fitbit Web API ऐप्लिकेशन को नए Google Health API पर माइग्रेट कर सकें.

आपको माइग्रेट क्यों करना चाहिए?

Google Health API का इस्तेमाल करने के ये फ़ायदे हैं:

  • बेहतर सुरक्षा: Google के सुरक्षा से जुड़े सबसे सही तरीकों का पालन करना. साथ ही, Google के सुरक्षा, निजता, और पहचान से जुड़े मानकों के मुताबिक काम करना.
  • डेटा में एकरूपता: यह डेटा फ़ॉर्मैट, टाइम ज़ोन, मेज़रमेंट यूनिट, और गड़बड़ी ठीक करने के तरीके में एकरूपता लाता है. इससे डेवलपर को बेहतर अनुभव मिलता है.
  • स्केलेबिलिटी और आने वाले समय के लिए तैयारी: इसे आने वाले समय की ज़रूरतों को पूरा करने के लिए डिज़ाइन किया गया है. साथ ही, यह gRPC जैसे आधुनिक प्रोटोकॉल के साथ काम करता है.

ऐप्लिकेशन का रजिस्ट्रेशन

Google Health API का इस्तेमाल करने वाले सभी ऐप्लिकेशन को Google Cloud Console का इस्तेमाल करके रजिस्टर करना होगा. यह आपके सभी Google ऐप्लिकेशन को मैनेज करने के लिए एक सेंट्रल हब के तौर पर काम करता है.

अपने ऐप्लिकेशन को रजिस्टर करने के बारे में निर्देश पाने के लिए, शुरू करना पर जाएं. ऐप्लिकेशन रजिस्टर करते समय, आपको ये अंतर दिखेंगे.

Fitbit Web API Google Health API
सार्वजनिक लिंक https://dev.fitbit.com/apps https://console.cloud.google.com
नया ऐप्लिकेशन जोड़ना नया ऐप्लिकेशन रजिस्टर करें पर क्लिक करें
  1. Google Cloud प्रोजेक्ट बनाना
  2. Google Health API चालू करना
बुनियादी जानकारी ये फ़ील्ड भरें:
  • ऐप्लिकेशन का नाम
  • ब्यौरा
  • ऐप्लिकेशन की वेबसाइट का यूआरएल
  • संगठन
  • संगठन की वेबसाइट का यूआरएल
  • सेवा की शर्तें यूआरएल
  • निजता नीति URL
ये फ़ील्ड भरें:
  • ऐप्लिकेशन का नाम
  • सहायता के लिए ईमेल पता
  • ऑडियंस (इंटरनल या एक्सटर्नल)
  • संपर्क के लिए ईमेल पता
  • लोगो का आइकॉन
  • ऐप्लिकेशन की वेबसाइट का यूआरएल
  • निजता नीति यूआरएल
  • सेवा की शर्तें यूआरएल
  • अनुमति वाला डोमेन
ऐप्लिकेशन के टाइप डेवलपर को यह चुनना होगा:
  • सर्वर
  • क्लाइंट
  • Personal
  • वेब ऐप्लिकेशन
  • Android
  • Chrome एक्सटेंशन
  • iOS
  • टीवी
  • डेस्कटॉप ऐप्लिकेशन
  • Universal Windows platform
क्लाइंट आईडी यह कुकी तब रजिस्टर होती है, जब ऐप्लिकेशन की सेटिंग सेव की जाती हैं अलग से रजिस्टर किया गया हो
ऐक्सेस का प्रकार ऐप्लिकेशन के लेवल पर, पढ़ने और लिखने के ऐक्सेस को कंट्रोल किया जाता है रीड और राइट ऐक्सेस को स्कोप लेवल पर कंट्रोल किया जाता है
अतिरिक्त यूआरएल
  • रीडायरेक्ट यूआरएल: वह साइट जहां उपयोगकर्ताओं को स्कोप की अनुमति देने के बाद रीडायरेक्ट किया जाता है
  • अनुमति वाले JavaScript ऑरिजिन: एचटीटीपी ऑरिजिन, जो वेब ऐप्लिकेशन को होस्ट करता है
  • रीडायरेक्ट यूआरएल: वह साइट जहां उपयोगकर्ताओं को स्कोप की अनुमति देने के बाद रीडायरेक्ट किया जाता है

OAuth लागू करना

Google Health API ऐप्लिकेशन सिर्फ़ Google OAuth2 क्लाइंट लाइब्रेरी के साथ काम करते हैं. क्लाइंट लाइब्रेरी, लोकप्रिय फ़्रेमवर्क के लिए उपलब्ध हैं. इससे OAuth 2.0 को लागू करना आसान हो जाता है. Google OAuth2 लाइब्रेरी और ओपन सोर्स OAuth2 लाइब्रेरी के बीच ये अंतर हैं:

Fitbit Web API Google Health API
OAuth2 लाइब्रेरी के साथ काम करता है ओपन सोर्स Google OAuth2 क्लाइंट लाइब्रेरी
सुविधा अलग-अलग प्लैटफ़ॉर्म पर अलग-अलग होना सभी प्लैटफ़ॉर्म पर एक जैसा होना चाहिए
ऑथराइज़ेशन यूआरएल https://www.fitbit.com/oauth2/authorize https://accounts.google.com/o/oauth2/v2/auth
टोकन यूआरएल https://api.fitbit.com/oauth2/token https://oauth2.googleapis.com/token
ऐक्सेस टोकन की लाइफ़टाइम 8 घंटे 1 घंटा
ऐक्सेस टोकन का साइज़ 1024 बाइट 2,048 बाइट
रीफ़्रेश टोकन रीफ़्रेश टोकन, ऑथराइज़ेशन कोड ग्रांट फ़्लो का इस्तेमाल करते समय जनरेट होते हैं. किसी उपयोगकर्ता के लिए सिर्फ़ एक रीफ़्रेश टोकन जनरेट किया जा सकता है. टोकन की समयसीमा कभी खत्म नहीं होती और इनका इस्तेमाल सिर्फ़ एक बार किया जा सकता है. रीफ़्रेश टोकन जनरेट करने के लिए, अनुमति स्ट्रिंग में क्वेरी पैरामीटर "access_type=offline" होना चाहिए. एक उपयोगकर्ता के लिए, कई रीफ़्रेश टोकन बनाए जा सकते हैं. रीफ़्रेश टोकन, समय के हिसाब से तय किए जा सकते हैं. अगर इनका इस्तेमाल छह महीने तक नहीं किया जाता है, तो इनकी समयसीमा खत्म हो जाएगी. ऐसा तब भी होगा, जब उपयोगकर्ता ने समयसीमा के हिसाब से ऐक्सेस दिया हो या ऐप्लिकेशन "टेस्टिंग" मोड में हो. ज़्यादा जानकारी के लिए, रीफ़्रेश टोकन की समयसीमा खत्म होना देखें.
टोकन रिस्पॉन्स JSON रिस्पॉन्स में यह जानकारी शामिल होती है:
  • ऐक्सेस टोकन
  • ऐक्सेस टोकन की समयसीमा खत्म होने की तारीख
  • स्कोप
  • टोकन टाइप
  • रीफ़्रेश टोकन
  • यूज़र आईडी
JSON रिस्पॉन्स में यह जानकारी शामिल होती है:
  • ऐक्सेस टोकन
  • ऐक्सेस टोकन की समयसीमा खत्म होने की तारीख
  • स्कोप
  • टोकन टाइप
  • रीफ़्रेश टोकन

उपयोगकर्ता का आईडी पाने के लिए, users.getIdentity एंडपॉइंट का इस्तेमाल करें.

Fitbit का इस्तेमाल करने वाले लोगों को आपके नए इंटिग्रेशन के लिए फिर से सहमति देनी होगी, क्योंकि आपका ऐप्लिकेशन किसी दूसरी OAuth लाइब्रेरी का इस्तेमाल कर रहा है. ऐक्सेस टोकन और रीफ़्रेश टोकन को Google Health API में ट्रांसफ़र नहीं किया जा सकता.

स्कोप

Google Health API के स्कोप का इस्तेमाल करने के लिए, आपको अनुमति के अनुरोध को अपडेट करना होगा. स्कोप से यह तय होता है कि आपका ऐप्लिकेशन, डेटा को पढ़ने या उसमें बदलाव करने की कार्रवाइयों के साथ काम करता है या नहीं. ऐसे स्कोप का इस्तेमाल न करें जिनकी आपके ऐप्लिकेशन को ज़रूरत नहीं है. अगर आपके ऐप्लिकेशन के डिज़ाइन में बदलाव होता है, तो बाद में ज़्यादा स्कोप जोड़े जा सकते हैं.

Google Health API के स्कोप, 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 के स्कोप की मैपिंग
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 के डेटा टाइप की मैपिंग
Fitbit Web API डेटा टाइप Google Health API डेटा टाइप
  एंडपॉइंट आईडी
ऐक्टिव ज़ोन मिनट ऐक्टिव ज़ोन मिनट
  active-zone-minutes
इसमें उपयोगकर्ता की गतिविधि के लेवल में हुए बदलावों की जानकारी होती है गतिविधि का लेवल
  activity-level
ऊंचाई ऊंचाई
  altitude
बॉडी फ़ैट से जुड़ा डेटा बॉडी फ़ैट
  body-fat
हर हार्ट रेट ज़ोन में caloriesOut हार्ट रेट ज़ोन में बर्न की गई कैलोरी
  calories-in-heart-rate-zone
एचआरवी की खास जानकारी धड़कन की दर में हर दिन होने वाला उतार-चढ़ाव
  daily-heart-rate-variability
SpO2 की खास जानकारी ऑक्सीजन की रोज़ाना की मात्रा
  daily-oxygen-saturation
आराम करते समय धड़कन की दर आराम करते समय हर दिन की धड़कन की दर
  daily-resting-heart-rate
त्वचा का तापमान रोज़ाना नींद के दौरान शरीर के तापमान में होने वाले बदलाव
  daily-sleep-temperature-derivations
दूरी दूरी
  distance
रिकॉर्ड की गई गतिविधि Exercise
  exercise
फ़्लोर फ़्लोर
  floors
धड़कन की दर धड़कन की दर
  heart-rate
एचआरवी इंट्राडे धड़कन की दर में उतार-चढ़ाव
  heart-rate-variability
SpO2 इंट्राडे ऑक्सीजन की मात्रा
  oxygen-saturation
उपयोगकर्ता के दौड़ने पर VO2 मैक्स वैल्यू दौड़ने के दौरान का VO2 मैक्स
  run-vo2-max
गतिविधि के समय की सीरीज़ में, बैठे रहने के मिनट बैठे रहने की अवधि
  sedentary-period
नींद नींद
  sleep
चरण चरण
  steps
गतिविधि caloriesOut कुल कैलोरी
  total-calories
VO2 मैक्स की वैल्यू VO2 मैक्स
  vo2-max
वज़न वज़न
  weight

एंडपॉइंट

REST एंडपॉइंट, सभी डेटा टाइप के लिए एक जैसा सिंटैक्स इस्तेमाल करते हैं.

  • सेवा एंडपॉइंट: बेस एचटीटीपी यूआरएल बदलकर https://health.googleapis.com हो जाता है.
  • एंडपॉइंट सिंटैक्स: Google Health API में सीमित संख्या में एंडपॉइंट काम करते हैं. इनका इस्तेमाल, साथ काम करने वाले ज़्यादातर डेटा टाइप के लिए किया जा सकता है. इससे सभी डेटा टाइप के लिए एक जैसा सिंटैक्स मिलता है. साथ ही, एंडपॉइंट का इस्तेमाल करना आसान हो जाता है.
  • उपयोगकर्ता आइडेंटिफ़ायर: एंडपॉइंट सिंटैक्स में, उपयोगकर्ता आईडी या me में से किसी एक को तय किया जाना चाहिए. मेरा इस्तेमाल करते समय, यूज़र आईडी का पता ऐक्सेस टोकन से लगाया जाता है.

उदाहरण: यहां Google Health API का इस्तेमाल करके कॉल किए गए, GET Profile एंडपॉइंट का उदाहरण दिया गया है

GET https://health.googleapis.com/v4/users/me/profile

एंडपॉइंट मैपिंग

उपलब्ध डेटा टाइप और उनके साथ काम करने वाले एपीआई के तरीकों की सूची देखने के लिए, डेटा टाइप की उपलब्धता टेबल देखें.

Fitbit Web API एंडपॉइंट टाइप Google Health API
GET (Log | Summary | Daily Summary) where you are requesting a single day of data windowSize = 1 दिन के साथ dailyRollup तरीका
GET (इंट्राडे) जहां आपको ज़्यादा जानकारी वाला डेटा चाहिए list तरीका
तारीख या इंटरवल के हिसाब से GET (टाइम सीरीज़) तारीख की सीमा के साथ rollUp या dailyRollUp तरीका
GET (लॉग की सूची) list तरीका
लॉग बनाना और अपडेट करना patch तरीका
लॉग मिटाएं batchDelete तरीका
प्रोफ़ाइल पाएं 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 लाइब्रेरी का इस्तेमाल करते हैं. इसलिए, आपको "ब्रिजिंग" अवधि को मैनेज करना होगा. इस दौरान, दोनों लाइब्रेरी आपके कोडबेस में मौजूद रहेंगी.

पैरलल ऑथराइज़ेशन मैनेजमेंट

  • Encapsulate Clients: अपनी "स्वास्थ्य सेवा" के लिए, ऐब्स्ट्रैक्शन लेयर या इंटरफ़ेस बनाएं. इससे आपके ऐप्लिकेशन के बाकी हिस्से को डेटा का अनुरोध करने की अनुमति मिलती है. इसके लिए, यह जानना ज़रूरी नहीं है कि उस उपयोगकर्ता के लिए कौनसी लाइब्रेरी (Fitbit OAuth बनाम Google OAuth) चालू है.
  • डेटाबेस स्कीमा अपडेट: अपनी उपयोगकर्ता टेबल को अपडेट करके, उसमें oauth_type फ़्लैग शामिल करें. उदाहरण के लिए, Fitbit OAuth के लिए fitbit और Google OAuth के लिए google का इस्तेमाल करें.
    • नए उपयोगकर्ता: डिफ़ॉल्ट रूप से Google Health API और Google OAuth लाइब्रेरी का इस्तेमाल करते हैं. oauth_type को google पर सेट करें.
    • मौजूदा उपयोगकर्ता: जब तक वे सहमति लेने की प्रोसेस पूरी नहीं कर लेते, तब तक Fitbit Web API का इस्तेमाल करते रहें. oauth_type को fitbit पर सेट करें.

"स्टेप-अप" के लिए फिर से सहमति लेने का फ़्लो

लॉग आउट करने के लिए मजबूर करने के बजाय, इंक्रीमेंटल ऑथराइज़ेशन का इस्तेमाल करें:

  1. Fitbit के ओपन सोर्स टोकन का पता लगाना: जब Fitbit Web API का कोई उपयोगकर्ता ऐप्लिकेशन खोलता है, तब "सेवा से जुड़ा अपडेट" सूचना ट्रिगर करें.
  2. Google OAuth फ़्लो लॉन्च करें: जब उपयोगकर्ता "अपडेट करें" पर क्लिक करता है, तो Google OAuth2 लाइब्रेरी फ़्लो शुरू करें.
  3. बदलें और रद्द करें: Google OAuth टोकन मिलने के बाद, उसे उपयोगकर्ता की प्रोफ़ाइल में सेव करें. साथ ही, oauth_type को fitbit से google पर अपडेट करें. इसके अलावा, अगर हो सके, तो प्रोग्राम के ज़रिए पुराने fitbit टोकन को रद्द करें, ताकि उपयोगकर्ता की सुरक्षा प्रोफ़ाइल को सुरक्षित रखा जा सके.

ज़्यादा से ज़्यादा उपयोगकर्ताओं को अपने साथ जोड़े रखना

फिर से सहमति लेने की प्रोसेस, चर्न के लिए "खतरे वाली स्थिति" होती है. उपयोगकर्ताओं को ऐप्लिकेशन का इस्तेमाल बंद करने से रोकने के लिए, उपयोगकर्ता अनुभव से जुड़े इन सबसे सही तरीकों को अपनाएं:

"वैल्यू-फ़र्स्ट" कम्यूनिकेशन

"हमने अपने एपीआई को अपडेट कर दिया है" से शुरुआत न करें. Google की मदद से तैयार किए गए नए सिस्टम के फ़ायदों के बारे में बताएं:

  • बेहतर सुरक्षा: Google की इंडस्ट्री में सबसे बेहतर खाता सुरक्षा और 2FA के बारे में बताएं.
  • भरोसेमंद: डेटा को तेज़ी से सिंक किया जा सकता है और डेटा कनेक्शन ज़्यादा स्थिर होते हैं.
  • सुविधा को सीमित तौर पर उपलब्ध कराना: उपयोगकर्ताओं को यह जानकारी देना कि नई सुविधाओं और डेटा टाइप के लिए अपडेट ज़रूरी है.

स्मार्ट टाइमिंग

  • अहम टास्क के बीच में सहमति लेने के लिए स्क्रीन न दिखाएं: जब कोई व्यक्ति कसरत कर रहा हो या खाने-पीने की चीज़ों की जानकारी लॉग कर रहा हो, तब सहमति लेने के लिए स्क्रीन को ट्रिगर न करें.
  • "नज" फ़ेज़: पहले 30 दिनों के लिए, खारिज किए जा सकने वाले बैनर का इस्तेमाल करें.
  • "हार्ड कटऑफ़" फ़ेज़: सहमति लेने की प्रोसेस को सिर्फ़ तब ज़रूरी बनाएं, जब चेतावनी देने के कई हफ़्ते बीत चुके हों. ऐसा Fitbit Web API के बंद होने की आधिकारिक समयसीमा के साथ करें.

माइग्रेशन फ़्लो की तुलना

पुराने और नए फ़्लो के बीच विज़ुअल अंतर से, डेवलपर को यह समझने में मदद मिलती है कि लॉजिक कहां से शुरू होता है.

सुविधा Fitbit Web API (लेगसी) Google Health API (Google-Identity)
पुष्टि करने वाली लाइब्रेरी स्टैंडर्ड ओपन सोर्स Google Identity Services (GIS) / Google Auth
उपयोगकर्ता खाते Fitbit के लेगसी क्रेडेंशियल Google खाता
टोकन का टाइप Fitbit के लिए खास तौर पर ऐक्सेस / रीफ़्रेश करना Google से जारी किए गए ऐक्सेस/रीफ़्रेश टोकन
स्कोप मैनेजमेंट ज़्यादा अनुमतियां ज़्यादा बेहतर / धीरे-धीरे मिलने वाली अनुमतियां

खाता माइग्रेशन से जुड़ी बारीकियों को मैनेज करना

Fitbit के दस्तावेज़ के मुताबिक, अपने खाते को Google पर माइग्रेट करने वाले उपयोगकर्ताओं के तीसरे पक्ष के कनेक्शन आम तौर पर तुरंत नहीं हटते. हालांकि, एपीआई वर्शन को बदलना डेवलपर के लिए ज़रूरी है.

  • टोकन के मान्य होने की जांच करना: backgroundworker का इस्तेमाल करके, यह जांच करें कि Fitbit टोकन "अनुमति नहीं है" गड़बड़ियों के साथ काम नहीं कर रहे हैं या नहीं. इससे पता चल सकता है कि उपयोगकर्ता ने अपना खाता माइग्रेट कर लिया है, लेकिन आपका ऐप्लिकेशन अब भी पुराने खाते से जुड़ा है.
  • ग्रेसफ़ुल फ़ेलियर: अगर Fitbit OAuth कॉल काम नहीं करता है, तो उपयोगकर्ता को "Fitbit से फिर से कनेक्ट करें" पेज पर रीडायरेक्ट करें. यह पेज, खास तौर पर नए Google OAuth फ़्लो का इस्तेमाल करता है.

कोड का उदाहरण

लेगसी Fitbit Web API से Google Health API पर माइग्रेट करने के लिए, आपको सामान्य OAuth2 लाइब्रेरी से Google Auth Library पर माइग्रेट करना होगा. यहां "डुअल-लाइब्रेरी" की स्थिति को मैनेज करने के लिए, आर्किटेक्चर का सुझाव दिया गया है. साथ ही, JavaScript में लिखा गया एक सूडो-कोड भी दिया गया है.

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
यूज़र आईडी /oauth2/token रिस्पॉन्स में Fitbit का एन्कोड किया गया आईडी मिला users.getIdentity एंडपॉइंट से मिला यूज़र आईडी

4. उपयोगकर्ताओं को अपने साथ जोड़े रखने की चेकलिस्ट

  • सेशन जारी रखना: Google Health API के access_token की पुष्टि होने और उसे आपके डेटाबेस में सेव होने तक, उपयोगकर्ता के Fitbit Web API के पुराने सेशन को बंद न करें.
  • अनुमति अपने-आप रद्द होना: Google Health API पर माइग्रेट करने की प्रोसेस पूरी होने के बाद, लेगसी Fitbit के अनुमति रद्द करने वाले एंडपॉइंट पर POST अनुरोध का इस्तेमाल करें: https://api.fitbit.com/oauth2/revoke. इससे यह पक्का हो जाता है कि उपयोगकर्ता को Fitbit की सेटिंग में, ऐप्लिकेशन की "डुप्लीकेट" अनुमतियां नहीं दिखेंगी.
  • गड़बड़ी ठीक करना: अगर Fitbit कॉल में 401 Unauthorized गड़बड़ी होती है, तो गड़बड़ी का मैसेज दिखाने के बजाय, Google OAuth फ़्लो पर अपने-आप रीडायरेक्ट करें.