Để di chuyển từ Fitbit Web API cũ sang Google Health API, bạn sẽ chuyển từ các thư viện OAuth2 chung sang Thư viện xác thực của Google. Sau đây là một đề xuất về cấu trúc và một cách triển khai mã giả được viết bằng JavaScript để xử lý trạng thái "Thư viện kép" này.
1. "Middleware Switch" (Công tắc phần mềm trung gian)
Vì bạn không thể di chuyển tất cả người dùng cùng một lúc, nên phần phụ trợ của bạn cần xác định thư viện cần sử dụng dựa trên apiVersion hiện tại của người dùng được lưu trữ trong cơ sở dữ liệu của bạn.
Triển khai
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. Di chuyển quy trình trải nghiệm người dùng
Để tối đa hoá tỷ lệ giữ chân, hãy sử dụng mẫu "Làm gián đoạn và nâng cấp". Điều này đảm bảo người dùng không bị buộc phải đăng nhập lại cho đến khi họ đã tương tác với ứng dụng.
Logic chuyển hướng
Khi người dùng Fitbit Web API sử dụng một tính năng cụ thể, hãy kích hoạt quy trình di chuyển:
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. Các bước chuyển đổi kỹ thuật chính
Khi viết tập lệnh di chuyển JavaScript, hãy lưu ý những điểm khác biệt sau:
| Tính năng | Fitbit Web API (Phiên bản cũ) | Google Health API (Google-Identity) |
| Điểm cuối mã thông báo | https://api.fitbit.com/oauth2/token | https://oauth2.googleapis.com/token |
| Thư viện xác thực | Nguồn mở tiêu chuẩn | Google Auth |
| Phạm vi | hoạt động | https://www.googleapis.com/auth/googlehealth.activity_and_fitness |
| User ID | Mã nhận dạng được mã hoá của Fitbit được trả về trong phản hồi /oauth2/token | Mã nhận dạng người dùng được trả về từ điểm cuối users.getIdentity |
4. Danh sách kiểm tra việc lưu giữ
- Tính năng duy trì phiên: Đừng xoá phiên API Fitbit Web cũ của người dùng cho đến khi access_token của Google Health API được xác minh thành công và lưu vào cơ sở dữ liệu của bạn.
- Tự động thu hồi: Sau khi quá trình di chuyển API Google Health hoàn tất, hãy sử dụng yêu cầu POST đến điểm cuối thu hồi Fitbit cũ: https://api.fitbit.com/oauth2/revoke. Điều này đảm bảo người dùng không thấy các quyền cho ứng dụng "trùng lặp" trong phần cài đặt Fitbit.
- Xử lý lỗi: Nếu một lệnh gọi Fitbit trả về trạng thái 401 Unauthorized (Không được phép), hãy tự động chuyển hướng đến quy trình Google OAuth thay vì hiển thị thông báo lỗi.