Untuk bermigrasi dari Fitbit Web API lama ke Google Health API, Anda akan berpindah dari library OAuth2 umum ke Google Auth Library. Berikut adalah saran arsitektur dan penerapan pseudo-code yang ditulis dalam Javascript untuk menangani status "Dual-Library" ini.
1. "Pengalihan Middleware"
Karena Anda tidak dapat memigrasikan semua pengguna sekaligus, backend Anda perlu menentukan
library mana yang akan digunakan berdasarkan apiVersion pengguna saat ini yang disimpan di
database Anda.
Penerapan
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. Memigrasikan alur UX
Untuk memaksimalkan retensi, gunakan pola "Interrupt-and-Upgrade". Hal ini memastikan pengguna tidak dipaksa untuk login ulang hingga mereka sudah berinteraksi dengan aplikasi.
Logika pengalihan
Saat pengguna Fitbit Web API mengakses fitur tertentu, picu migrasi:
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. Transisi teknis utama
Saat menulis skrip migrasi JavaScript, perhatikan perbedaan berikut:
| Fitur | Fitbit Web API (Legacy) | Google Health API (Google-Identity) |
| Token Endpoint | https://api.fitbit.com/oauth2/token | https://oauth2.googleapis.com/token |
| Auth Library | Open Source Standar | Autentikasi Google |
| Cakupan | aktivitas | https://www.googleapis.com/auth/googlehealth.activity_and_fitness |
| ID Pengguna | ID yang Dikodekan Fitbit ditampilkan dalam respons /oauth2/token | ID pengguna yang ditampilkan dari endpoint users.getIdentity |
4. Checklist retensi
- Persistensi Sesi: Jangan hapus sesi Fitbit Web API lama pengguna hingga access_token Google Health API berhasil diverifikasi dan disimpan ke database Anda.
- Pencabutan Otomatis: Setelah migrasi Google Health API selesai, gunakan permintaan POST ke endpoint pencabutan Fitbit lama: https://api.fitbit.com/oauth2/revoke. Tindakan ini memastikan pengguna tidak melihat izin aplikasi "duplikat" di setelan Fitbit mereka.
- Penanganan Error: Jika panggilan Fitbit menampilkan 401 Tidak Sah, alihkan secara otomatis ke alur OAuth Google, bukan menampilkan pesan error.