পুরোনো 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 ফ্লো-তে রিডাইরেক্ট করুন।