기존 Fitbit Web API에서 Google Health API로 이전하려면 일반 OAuth2 라이브러리에서 Google Auth 라이브러리로 이동합니다. 다음은 이 '이중 라이브러리' 상태를 처리하기 위해 자바스크립트로 작성된 아키텍처 제안사항과 유사 코드 구현입니다.
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. 주요 기술 전환
자바스크립트 이전 스크립트를 작성할 때는 다음과 같은 차이점에 유의하세요.
| 기능 | Fitbit Web API (기존) | Google Health API (Google-Identity) |
| 토큰 엔드포인트 | https://api.fitbit.com/oauth2/token | https://oauth2.googleapis.com/token |
| 인증 라이브러리 | 표준 오픈소스 | Google 인증 |
| 범위 | 활동 | https://www.googleapis.com/auth/googlehealth.activity_and_fitness |
| 사용자 ID | /oauth2/token 응답에서 반환된 Fitbit 인코딩 ID | users.getIdentity 엔드포인트에서 반환된 사용자 ID |
4. 유지 체크리스트
- 세션 지속성: Google Health API access_token이 성공적으로 확인되고 데이터베이스에 저장될 때까지 사용자의 이전 Fitbit Web API 세션을 지우지 마세요.
- 자동 취소: Google Health API 이전이 완료되면 POST 요청을 기존 Fitbit 취소 엔드포인트( https://api.fitbit.com/oauth2/revoke)에 사용합니다. 이렇게 하면 사용자의 Fitbit 설정에 '중복' 앱 권한이 표시되지 않습니다.
- 오류 처리: Fitbit 호출에서 401 권한 없음이 반환되면 오류 메시지를 표시하는 대신 Google OAuth 흐름으로 자동 리디렉션합니다.