Eski Fitbit Web API'den Google Health API'ye geçmek için genel OAuth2 kitaplıklarından Google Auth Kitaplığı'na geçmeniz gerekir. Aşağıda, bu "Çift Kitaplık" durumunu işlemek için JavaScript'te yazılmış bir mimari öneri ve sözde kod uygulaması verilmiştir.
1. "Ara Katman Yazılımı Anahtarı"
Tüm kullanıcıları aynı anda taşıyamayacağınız için arka uç sisteminizin, veritabanınızda depolanan kullanıcının mevcut apiVersion değerine göre hangi kitaplığın kullanılacağını belirlemesi gerekir.
Uygulama
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. Kullanıcı deneyimi akışını taşıma
Elde tutma oranını en üst düzeye çıkarmak için "Kesintiye uğrat ve yükselt" modelini kullanın. Bu sayede, kullanıcı uygulamayla etkileşime geçene kadar yeniden giriş yapmaya zorlanmaz.
Yönlendirme mantığı
Bir Fitbit Web API kullanıcısı belirli bir özelliği kullandığında taşıma işlemini tetikleyin:
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. Önemli teknik geçişler
JavaScript taşıma komut dosyalarınızı yazarken aşağıdaki farkları göz önünde bulundurun:
| Özellik | Fitbit Web API (Eski) | Google Health API (Google-Identity) |
| Jeton uç noktası | https://api.fitbit.com/oauth2/token | https://oauth2.googleapis.com/token |
| Auth Library | Standart Açık Kaynak | Google Auth |
| Kapsam | etkinlik | https://www.googleapis.com/auth/googlehealth.activity_and_fitness |
| Kullanıcı Kimliği | /oauth2/token yanıtında döndürülen Fitbit kodlanmış kimliği | users.getIdentity uç noktasından döndürülen kullanıcı kimliği |
4. Elde tutma kontrol listesi
- Oturumun Kalıcılığı: Google Health API access_token'ı başarıyla doğrulanıp veritabanınıza kaydedilene kadar kullanıcının eski Fitbit Web API oturumunu temizlemeyin.
- Otomatik iptal: Google Health API geçişi tamamlandıktan sonra, eski Fitbit iptal uç noktasına bir POST isteği gönderin: https://api.fitbit.com/oauth2/revoke. Bu sayede kullanıcı, Fitbit ayarlarında "yinelenen" uygulama izinleri görmez.
- Hata İşleme: Bir Fitbit çağrısı 401 Yetkisiz hatası döndürürse hata mesajı göstermek yerine otomatik olarak Google OAuth akışına yönlendirin.