গুগল হেলথ এপিআই হলো একেবারে নতুন করে তৈরি করা একটি এপিআই, যা ডেভেলপারদের ফিটবিট ব্যবহারকারীর ডেটা কোয়েরি করার সুযোগ দেয়। এটি শুধু একটি আপডেট নয়, বরং আপনার অ্যাপগুলো যেন সুরক্ষিত, নির্ভরযোগ্য এবং স্বাস্থ্য প্রযুক্তির ভবিষ্যৎ অগ্রগতির জন্য প্রস্তুত থাকে, তা নিশ্চিত করার জন্য এটি একটি কৌশলগত পদক্ষেপ। এই এপিআই আপনার অ্যাপ নিবন্ধন করার জন্য একটি নতুন কনসোল, গুগল ওঅথ ২.০ (Google OAuth 2.0) সাপোর্ট, নতুন ডেটা টাইপ, নতুন এন্ডপয়েন্ট স্কিমা এবং নতুন রেসপন্স ফরম্যাট সমর্থন করে।
এই নির্দেশিকাটি ডেভেলপারদের তাদের বিদ্যমান ফিটবিট ওয়েব এপিআই অ্যাপগুলোকে নতুন গুগল হেলথ এপিআই-তে স্থানান্তরিত করতে সাহায্য করার জন্য তৈরি করা হয়েছে।
আপনার কেন অভিবাসন করা উচিত?
গুগল হেলথ এপিআই ব্যবহারের সুবিধাগুলো হলো:
- উন্নত নিরাপত্তা : গুগলের নিরাপত্তা সংক্রান্ত সর্বোত্তম অনুশীলনসমূহের সাথে সঙ্গতি এবং গুগলের নিরাপত্তা, গোপনীয়তা ও পরিচয় মানদণ্ডের সাথে সামঞ্জস্য।
- সামঞ্জস্য : ডেটা ফরম্যাট, টাইম জোন, পরিমাপের একক এবং ত্রুটি ব্যবস্থাপনার ক্ষেত্রে পুরোনো অসঙ্গতিগুলো দূর করে ডেভেলপারদের জন্য আরও সহজবোধ্য অভিজ্ঞতা নিশ্চিত করে।
- সম্প্রসারণযোগ্যতা ও ভবিষ্যৎ-উপযোগিতা : ভবিষ্যতের চাহিদা মেটাতে সম্প্রসারণের জন্য ডিজাইন করা হয়েছে এবং gRPC-এর মতো আধুনিক প্রোটোকল সমর্থন করে।
অ্যাপ নিবন্ধন
সমস্ত গুগল হেলথ এপিআই অ্যাপ অবশ্যই গুগল ক্লাউড কনসোল ব্যবহার করে নিবন্ধন করতে হবে, যা আপনার সমস্ত গুগল অ্যাপ পরিচালনার জন্য একটি কেন্দ্রীয় কেন্দ্র হিসেবে কাজ করে।
আপনার অ্যাপ নিবন্ধন করার নির্দেশাবলীর জন্য, 'শুরু করা' (Getting Started) অংশের ধাপগুলো অনুসরণ করুন। আপনার অ্যাপ নিবন্ধন করার সময় আপনি যে পার্থক্যগুলো লক্ষ্য করবেন তা এখানে দেওয়া হলো।
| ফিটবিট ওয়েব এপিআই | গুগল স্বাস্থ্য এপিআই | |
| সর্বজনীন লিঙ্ক(গুলি) | https://dev.fitbit.com/apps | https://console.cloud.google.com |
| একটি নতুন অ্যাপ যোগ করা | একটি নতুন অ্যাপ নিবন্ধন করতে চাপুন। |
|
| মৌলিক তথ্য | পূরণ করার জন্য ক্ষেত্রসমূহ:
| পূরণ করার জন্য ক্ষেত্রসমূহ:
|
| আবেদনের প্রকারভেদ | একজন ডেভেলপারকে নির্বাচন করতে হবে:
|
|
| ক্লায়েন্ট আইডি | অ্যাপ্লিকেশন সেটিংস সংরক্ষণ করার সময় নিবন্ধিত হয়। | আলাদাভাবে নিবন্ধিত |
| অ্যাক্সেস টাইপ | পঠন ও লিখন প্রবেশাধিকার অ্যাপ পর্যায়ে নিয়ন্ত্রিত হয়। | স্কোপ স্তরে পঠন ও লিখন অ্যাক্সেস নিয়ন্ত্রণ করা হয়। |
| অতিরিক্ত ইউআরএল |
|
|
OAuth বাস্তবায়ন
গুগল হেলথ এপিআই অ্যাপগুলো শুধুমাত্র গুগল OAuth2 ক্লায়েন্ট লাইব্রেরি সমর্থন করে। জনপ্রিয় ফ্রেমওয়ার্কগুলোর জন্য ক্লায়েন্ট লাইব্রেরিগুলো উপলব্ধ, যা OAuth 2.0 বাস্তবায়নকে আরও সহজ করে তোলে। গুগল OAuth2 লাইব্রেরি এবং ওপেন সোর্স OAuth2 লাইব্রেরির মধ্যে পার্থক্যগুলো নিম্নরূপ:
| ফিটবিট ওয়েব এপিআই | গুগল স্বাস্থ্য এপিআই | |
| OAuth2 লাইব্রেরি সমর্থন | ওপেন সোর্স | গুগল 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 |
| অ্যাক্সেস টোকেনের জীবনকাল | ৮ ঘন্টা | ১ ঘন্টা |
| অ্যাক্সেস টোকেনের আকার | ১০২৪ বাইট | ২০৪৮ বাইট |
| রিফ্রেশ টোকেন | অথরাইজেশন কোড গ্র্যান্ট ফ্লো ব্যবহার করার সময় রিফ্রেশ টোকেন তৈরি হয়। একজন ব্যবহারকারীর জন্য কেবল ১টি রিফ্রেশ টোকেন তৈরি করা যায়। টোকেনগুলোর কোনো মেয়াদ শেষ হয় না এবং এগুলো শুধুমাত্র একবারই ব্যবহার করা যায়। | একটি রিফ্রেশ টোকেন তৈরি করতে, অথরাইজেশন স্ট্রিং-এ অবশ্যই "access_type=offline" কোয়েরি প্যারামিটারটি থাকতে হবে। একজন ব্যবহারকারীর জন্য একাধিক রিফ্রেশ টোকেন তৈরি করা যেতে পারে। রিফ্রেশ টোকেন সময়-ভিত্তিক হতে পারে। যদি সেগুলি ৬ মাসের মধ্যে ব্যবহার না করা হয়, ব্যবহারকারী সময়-ভিত্তিক অ্যাক্সেস প্রদান করেন, অথবা অ্যাপটি "টেস্টিং" মোডে থাকে, তাহলে সেগুলির মেয়াদ শেষ হয়ে যাবে। আরও বিস্তারিত জানতে রিফ্রেশ টোকেনের মেয়াদ শেষ হওয়া দেখুন। |
| টোকেন প্রতিক্রিয়া | JSON প্রতিক্রিয়াতে রয়েছে:
| JSON প্রতিক্রিয়াতে রয়েছে:
ইউজার আইডি পেতে users.getIdentity এন্ডপয়েন্টটি ব্যবহার করুন। |
ব্যবহারকারীর পুনঃ-প্রমাণীকরণ (বাধ্যতামূলক পুনঃ-সম্মতি)
Fitbit ব্যবহারকারীদের আপনার নতুন ইন্টিগ্রেশনের জন্য পুনরায় সম্মতি দিতে হবে, কারণ আপনার অ্যাপটি একটি ভিন্ন OAuth লাইব্রেরি ব্যবহার করছে। অ্যাক্সেস টোকেন এবং রিফ্রেশ টোকেন Google Health API-তে স্থানান্তর করা এবং সেগুলোকে কার্যকর করা সম্ভব নয়।
স্কোপ
গুগল হেলথ এপিআই স্কোপ ব্যবহার করার জন্য আপনাকে অবশ্যই আপনার অনুমোদন অনুরোধটি আপডেট করতে হবে। স্কোপগুলো নির্ধারণ করে যে আপনার অ্যাপটি রিড বা রাইট অপারেশন সমর্থন করে কিনা। আপনার অ্যাপের জন্য অপ্রয়োজনীয় স্কোপ ব্যবহার করবেন না। আপনার অ্যাপের ডিজাইন পরিবর্তিত হলে আপনি পরবর্তীতে যেকোনো সময় আরও স্কোপ যোগ করতে পারেন।
গুগল হেলথ এপিআই স্কোপগুলো হলো একটি HTTP URL যা https://www.googleapis.com/auth/googlehealth.{scope} দিয়ে শুরু হয়। উদাহরণস্বরূপ, https://www.googleapis.com/auth/googlehealth.activity_and_fitness।
স্কোপ ম্যাপিং
ফিটবিট ওয়েব এপিআই স্কোপগুলো গুগল হেলথ এপিআই স্কোপের সাথে যেভাবে সংযুক্ত হয়, তা নিচে দেওয়া হলো:
| ফিটবিট ওয়েব এপিআই স্কোপ | গুগল হেলথ এপিআই স্কোপ |
|---|---|
| কার্যকলাপ | .কার্যকলাপ_এবং_ফিটনেস .activity_and_fitness.readonly |
| কার্ডিও_ফিটনেস | .কার্যকলাপ_এবং_ফিটনেস .activity_and_fitness.readonly |
| হৃদস্পন্দন | স্বাস্থ্য_মেট্রিক্স_এবং_পরিমাপ .health_metrics_and_measurements.readonly |
| অবস্থান | .location.readonly |
| পুষ্টি | পুষ্টি .nutrition.readonly |
| অক্সিজেন_স্যাচুরেশন | স্বাস্থ্য_মেট্রিক্স_এবং_পরিমাপ .health_metrics_and_measurements.readonly |
| প্রোফাইল | প্রোফাইল .profile.readonly |
| শ্বাস-প্রশ্বাসের হার | স্বাস্থ্য_মেট্রিক্স_এবং_পরিমাপ .health_metrics_and_measurements.readonly |
| সেটিংস | .সেটিংস .settings.readonly |
| ঘুম | ঘুম .sleep.readonly |
| তাপমাত্রা | স্বাস্থ্য_মেট্রিক্স_এবং_পরিমাপ .health_metrics_and_measurements.readonly |
| ওজন | স্বাস্থ্য_মেট্রিক্স_এবং_পরিমাপ .health_metrics_and_measurements.readonly |
ডেটা টাইপ
এখানে গুগল হেলথ এপিআই ডেটা টাইপগুলোর একটি তালিকা এবং ফিটবিট ওয়েব এপিআই-এর সাথে সেগুলোর সামঞ্জস্য তুলে ধরা হলো।
| ফিটবিট ওয়েব এপিআই ডেটা টাইপ | গুগল হেলথ এপিআই ডেটা টাইপ এন্ডপয়েন্ট আইডি |
|---|---|
| সক্রিয় অঞ্চলের মিনিট | সক্রিয় অঞ্চলের মিনিট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 |
| মেঝে | মেঝেfloors |
| হৃদস্পন্দন | হৃদস্পন্দনheart-rate |
| এইচআরভি ইন্ট্রাডে | হৃদস্পন্দন পরিবর্তনশীলতাheart-rate-variability |
| SpO2 ইন্ট্রাডে | অক্সিজেন স্যাচুরেশনoxygen-saturation |
| ব্যবহারকারী যখন দৌড়ায় তখন VO2 Max এর মান | রান ভিও২ ম্যাক্সrun-vo2-max |
| কার্যকলাপের সময় সিরিজ মিনিট নিষ্ক্রিয় | নিষ্ক্রিয় সময়কালsedentary-period |
| ঘুম | ঘুমsleep |
| পদক্ষেপ | পদক্ষেপsteps |
কার্যকলাপের ফলে caloriesOut | মোট ক্যালোরিtotal-calories |
| VO2 সর্বোচ্চ মান | ভিও২ ম্যাক্সvo2-max |
| ওজন | ওজনweight |
এন্ডপয়েন্ট
REST এন্ডপয়েন্টগুলো সকল ডেটা টাইপের জন্য একটি সামঞ্জস্যপূর্ণ সিনট্যাক্স অনুসরণ করে।
- সার্ভিস এন্ডপয়েন্ট : মূল HTTP URL পরিবর্তিত হয়ে https://health.googleapis.com হবে।
- এন্ডপয়েন্ট সিনট্যাক্স : গুগল হেলথ এপিআই সীমিত সংখ্যক এন্ডপয়েন্ট সমর্থন করে, যা বেশিরভাগ সমর্থিত ডেটা টাইপ দ্বারা ব্যবহার করা যায়। এটি সমস্ত ডেটা টাইপের জন্য একটি সামঞ্জস্যপূর্ণ সিনট্যাক্স প্রদান করে এবং এন্ডপয়েন্টগুলো ব্যবহার করা সহজ করে তোলে।
- ব্যবহারকারী শনাক্তকারী : এন্ডপয়েন্ট সিনট্যাক্সে হয় ইউজার আইডি অথবা 'me' উল্লেখ করতে হবে। 'me' ব্যবহার করার ক্ষেত্রে, অ্যাক্সেস টোকেন থেকে ইউজার আইডি অনুমান করা হয়।
উদাহরণ : এখানে গুগল হেলথ এপিআই ব্যবহার করে কল করা GET প্রোফাইল এন্ডপয়েন্টের একটি উদাহরণ দেওয়া হলো।
GET https://health.googleapis.com/v4/users/me/profile
এন্ডপয়েন্ট ম্যাপিং
উপলব্ধ ডেটা টাইপ এবং সেগুলোর সমর্থিত এপিআই মেথডগুলোর তালিকার জন্য ডেটা টাইপ অ্যাভেইলেবিলিটি টেবিলটি দেখুন।
| ফিটবিট ওয়েব এপিআই এন্ডপয়েন্ট টাইপ | গুগল স্বাস্থ্য এপিআই |
| GET (লগ | সারাংশ | দৈনিক সারাংশ) যেখানে আপনি শুধুমাত্র একদিনের ডেটা অনুরোধ করছেন | windowSize = 1 day` সহ `dailyRollup` পদ্ধতি |
| GET (ইন্ট্রাডে) যেখানে আপনি সূক্ষ্ম ডেটার জন্য অনুরোধ করছেন | তালিকা পদ্ধতি |
| তারিখ বা ব্যবধান অনুসারে সময় সিরিজ (GET) | তারিখের পরিসর সহ rollUp বা dailyRollUp পদ্ধতি |
| GET (লগ তালিকা) | তালিকা পদ্ধতি |
| লগ তৈরি ও আপডেট করুন | প্যাচ পদ্ধতি |
| লগ মুছে ফেলুন | ব্যাচডিলিট পদ্ধতি |
| প্রোফাইল পান | 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 লাইব্রেরি ব্যবহার করে, তাই আপনাকে এমন একটি 'ব্রিজিং' পর্যায় পরিচালনা করতে হবে যেখানে আপনার কোডবেসে উভয় লাইব্রেরিই বিদ্যমান থাকে।
সমান্তরাল অনুমোদন ব্যবস্থাপনা
- ক্লায়েন্ট এনক্যাপসুলেট করুন : আপনার "হেলথ সার্ভিস"-এর জন্য একটি অ্যাবস্ট্রাকশন লেয়ার বা ইন্টারফেস তৈরি করুন। এর ফলে, কোনো নির্দিষ্ট ব্যবহারকারীর জন্য কোন লাইব্রেরি (ফিটবিট OAuth বনাম গুগল OAuth) সক্রিয় আছে তা না জেনেই আপনার অ্যাপের বাকি অংশ ডেটার জন্য অনুরোধ করতে পারে।
- ডাটাবেস স্কিমা আপডেট : আপনার ইউজার টেবিলে একটি
oauth_typeফ্ল্যাগ অন্তর্ভুক্ত করতে তা আপডেট করুন। উদাহরণস্বরূপ, Fitbit OAuth-এর জন্যfitbitএবং Google OAuth-এর জন্যgoogleব্যবহার করুন।- নতুন ব্যবহারকারী : ডিফল্ট হিসেবে গুগল হেলথ এপিআই এবং গুগল ওঅথ লাইব্রেরি ব্যবহৃত হবে।
oauth_typeকেgoogleএ সেট করুন। - বিদ্যমান ব্যবহারকারীগণ : পুনরায় সম্মতি প্রক্রিয়াটি সম্পন্ন না করা পর্যন্ত Fitbit Web API-তে থাকুন।
oauth_typeকেfitbitএ সেট করুন।
- নতুন ব্যবহারকারী : ডিফল্ট হিসেবে গুগল হেলথ এপিআই এবং গুগল ওঅথ লাইব্রেরি ব্যবহৃত হবে।
"স্টেপ-আপ" পুনঃসম্মতি প্রবাহ
জোরপূর্বক লগআউট করার পরিবর্তে, পর্যায়ক্রমিক অনুমোদন পদ্ধতি ব্যবহার করুন:
- ফিটবিট ওপেন সোর্স টোকেন সনাক্ত করুন : যখন কোনো ফিটবিট ওয়েব এপিআই ব্যবহারকারী অ্যাপটি খুলবেন, তখন একটি "সার্ভিস আপডেট" বিজ্ঞপ্তি চালু করুন।
- Google OAuth ফ্লো চালু করুন : যখন ব্যবহারকারী "আপডেট" বোতামে ক্লিক করবেন, তখন Google OAuth2 লাইব্রেরি ফ্লোটি চালু হবে।
- প্রতিস্থাপন ও প্রত্যাহার : গুগল OAuth টোকেন সফলভাবে পেয়ে গেলে, সেটি ব্যবহারকারীর প্রোফাইলে সংরক্ষণ করুন,
oauth_typefitbitথেকেgoogleএ আপডেট করুন, এবং (যদি সম্ভব হয়) ব্যবহারকারীর নিরাপত্তা প্রোফাইল পরিষ্কার রাখতে প্রোগ্রাম্যাটিকভাবে পুরোনোfitbitটোকেনটি প্রত্যাহার করুন।
ব্যবহারকারী ধরে রাখার হার সর্বোচ্চ করুন
পুনরায় সম্মতি চাওয়া ব্যবহারকারী চলে যাওয়ার একটি 'বিপজ্জনক ক্ষেত্র'। ব্যবহারকারীরা যাতে অ্যাপটি ব্যবহার করা ছেড়ে না দেয়, তা নিশ্চিত করতে এই ইউএক্স (UX) সেরা অনুশীলনগুলো অনুসরণ করুন:
"মূল্য-প্রথম" যোগাযোগ
"আমরা আমাদের এপিআই আপডেট করেছি" এই কথা দিয়ে শুরু করবেন না। বরং গুগল-সমর্থিত নতুন সিস্টেমটির সুবিধাগুলো দিয়ে শুরু করুন:
- উন্নত নিরাপত্তা : গুগলের শীর্ষস্থানীয় অ্যাকাউন্ট সুরক্ষা এবং ২এফএ (2FA)-এর উল্লেখ করুন।
- নির্ভরযোগ্যতা : দ্রুততর সিঙ্ক এবং অধিকতর স্থিতিশীল ডেটা সংযোগ।
- ফিচার গেটিং : ব্যবহারকারীদের নম্রভাবে জানান যে নতুন ফিচার এবং ডেটা টাইপের জন্য আপডেট প্রয়োজন।
স্মার্ট টাইমিং
- গুরুত্বপূর্ণ কাজে বাধা দেবেন না : কোনো ব্যবহারকারী যখন ব্যায়াম করছেন বা খাবারের তথ্য লিপিবদ্ধ করছেন, তখন কখনোই পুনঃসম্মতি স্ক্রিনটি চালু করবেন না।
- ‘নাজ’ পর্যায় : প্রথম ৩০ দিনের জন্য, একটি বাতিলযোগ্য ব্যানার ব্যবহার করুন।
- "হার্ড কাটঅফ" পর্যায় : বেশ কয়েক সপ্তাহ ধরে সতর্ক করার পর, অফিসিয়াল ফিটবিট ওয়েব এপিআই (Fitbit Web API) বাতিলের শেষ তারিখের সাথে মিলিয়ে, পুনরায় সম্মতি বাধ্যতামূলক করা।
অভিবাসন প্রবাহের তুলনা
পুরানো এবং নতুন ফ্লো-এর মধ্যে একটি সুস্পষ্ট দৃশ্যমান পার্থক্য ডেভেলপারদের বুঝতে সাহায্য করে যে লজিকটি কোথায় বিভক্ত হয়েছে।
| বৈশিষ্ট্য | ফিটবিট ওয়েব এপিআই (লেগ্যাসি) | গুগল হেলথ এপিআই (গুগল-আইডেন্টিটি) |
| প্রমাণীকরণ গ্রন্থাগার | স্ট্যান্ডার্ড ওপেন সোর্স | গুগল আইডেন্টিটি সার্ভিসেস (জিআইএস) / গুগল অথেন্টিকেশন |
| ব্যবহারকারী অ্যাকাউন্ট | ফিটবিট লিগ্যাসি ক্রেডেনশিয়াল | গুগল অ্যাকাউন্ট |
| টোকেন টাইপ | ফিটবিট-নির্দিষ্ট অ্যাক্সেস / রিফ্রেশ | গুগল-প্রদত্ত অ্যাক্সেস/রিফ্রেশ টোকেন |
| পরিধি ব্যবস্থাপনা | ব্যাপক অনুমতি | সূক্ষ্ম / ক্রমবর্ধমান অনুমতি |
অ্যাকাউন্ট মাইগ্রেশনের সূক্ষ্মতা সামলান
ফিটবিটের ডকুমেন্টেশন অনুসারে, ব্যবহারকারীরা তাদের অ্যাকাউন্ট গুগলে স্থানান্তর করলে সাধারণত সঙ্গে সঙ্গে তাদের থার্ড-পার্টি সংযোগগুলো হারান না, কিন্তু এপিআই (API) ভার্সন পরিবর্তন করা ডেভেলপারদের পক্ষ থেকে একটি আবশ্যিক কাজ।
- টোকেনের বৈধতা যাচাই করুন : Fitbit টোকেনগুলো "Unauthorized" ত্রুটির কারণে ব্যর্থ হচ্ছে কিনা তা পরীক্ষা করতে একটি backgroundworker ব্যবহার করুন। এটি ইঙ্গিত দিতে পারে যে ব্যবহারকারী তার অ্যাকাউন্ট স্থানান্তর করেছেন কিন্তু আপনার অ্যাপটি এখনও তার সাথে তাল মেলাতে পারেনি।
- সুষ্ঠু ব্যর্থতা : যদি কোনো Fitbit OAuth কল ব্যর্থ হয়, তবে ব্যবহারকারীকে একটি কাস্টম "Reconnect Fitbit" পৃষ্ঠায় পুনঃনির্দেশিত করুন যা বিশেষভাবে নতুন Google OAuth ফ্লো ব্যবহার করে।
কোডের উদাহরণ
পুরোনো Fitbit Web API থেকে Google Health API-তে স্থানান্তরিত হতে হলে, আপনাকে সাধারণ OAuth2 লাইব্রেরিগুলো থেকে Google Auth লাইব্রেরিতে যেতে হবে। এই "দ্বৈত-লাইব্রেরি" অবস্থাটি পরিচালনা করার জন্য নিচে একটি স্থাপত্যগত পরামর্শ এবং জাভাস্ক্রিপ্টে লেখা একটি সিউডো-কোড বাস্তবায়ন দেওয়া হলো।
১. "মিডলওয়্যার সুইচ"
যেহেতু আপনি একবারে সমস্ত ব্যবহারকারীকে মাইগ্রেট করতে পারবেন না, তাই আপনার ডেটাবেসে সংরক্ষিত ব্যবহারকারীর বর্তমান 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);
}
}
২. ইউএক্স ফ্লো স্থানান্তর করুন
ব্যবহারকারী ধরে রাখার হার সর্বোচ্চ করতে, একটি "ইন্টারাপ্ট-অ্যান্ড-আপগ্রেড" প্যাটার্ন ব্যবহার করুন। এটি নিশ্চিত করে যে ব্যবহারকারী অ্যাপটির সাথে যুক্ত না হওয়া পর্যন্ত তাকে পুনরায় লগইন করতে বাধ্য করা হবে না।
পুনঃনির্দেশ যুক্তি
যখন কোনো Fitbit ওয়েব এপিআই ব্যবহারকারী একটি নির্দিষ্ট ফিচারে ক্লিক করেন, তখন মাইগ্রেশনটি চালু করুন:
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 });
});
৩. মূল প্রযুক্তিগত পরিবর্তন
আপনার জাভাস্ক্রিপ্ট মাইগ্রেশন স্ক্রিপ্ট লেখার সময় এই পার্থক্যগুলো মনে রাখবেন:
| বৈশিষ্ট্য | ফিটবিট ওয়েব এপিআই (লেগ্যাসি) | গুগল হেলথ এপিআই (গুগল-আইডেন্টিটি) |
| টোকেন এন্ডপয়েন্ট | https://api.fitbit.com/oauth2/token | https://oauth2.googleapis.com/token |
| প্রমাণীকরণ গ্রন্থাগার | স্ট্যান্ডার্ড ওপেন সোর্স | গুগল প্রমাণীকরণ |
| পরিধি | কার্যকলাপ | https://www.googleapis.com/auth/googlehealth.activity_and_fitness |
| ব্যবহারকারীর আইডি | /oauth2/token প্রতিক্রিয়ায় Fitbit এনকোডেড আইডি ফেরত এসেছে | users.getIdentity এন্ডপয়েন্ট থেকে প্রাপ্ত ইউজার আইডি |
৪. ধরে রাখার চেকলিস্ট
- সেশন স্থায়িত্ব : Google Health API access_token সফলভাবে যাচাই এবং আপনার ডেটাবেসে সংরক্ষিত না হওয়া পর্যন্ত ব্যবহারকারীর পুরানো Fitbit Web API সেশনটি মুছে ফেলবেন না।
- স্বয়ংক্রিয় প্রত্যাহার : গুগল হেলথ এপিআই মাইগ্রেশন সম্পন্ন হয়ে গেলে, লিগ্যাসি ফিটবিট রিভোক এন্ডপয়েন্টে (https://api.fitbit.com/oauth2/revoke) একটি POST রিকোয়েস্ট পাঠান। এটি নিশ্চিত করে যে ব্যবহারকারী তার ফিটবিট সেটিংসে কোনো "ডুপ্লিকেট" অ্যাপ পারমিশন দেখতে পাবেন না।
- ত্রুটি পরিচালনা : যদি কোনো ফিটবিট কল 401 Unauthorized ত্রুটি ফেরত দেয়, তাহলে ত্রুটির বার্তা দেখানোর পরিবর্তে স্বয়ংক্রিয়ভাবে Google OAuth ফ্লো-তে রিডাইরেক্ট করুন।