Pour migrer de l'ancienne API Fitbit Web vers l'API Google Health, vous passerez des bibliothèques OAuth2 générales à la bibliothèque Google Auth. Vous trouverez ci-dessous une suggestion d'architecture et une implémentation de pseudo-code écrite en JavaScript pour gérer cet état de "double bibliothèque".
1. Commutateur de middleware
Étant donné que vous ne pouvez pas migrer tous les utilisateurs en même temps, votre backend doit déterminer quelle bibliothèque utiliser en fonction de l'apiVersion actuelle de l'utilisateur stockée dans votre base de données.
Mise en œuvre
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. Migrer le flux d'expérience utilisateur
Pour maximiser la fidélisation, utilisez un "Interruption et mise à niveau" modèle. Ainsi, l'utilisateur n'est pas obligé de se reconnecter tant qu'il n'est pas déjà engagé dans l'application.
Logique de redirection
Lorsqu'un utilisateur de l'API Fitbit Web accède à une fonctionnalité spécifique, déclenchez la migration :
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. Principales transitions techniques
Lorsque vous écrivez vos scripts de migration JavaScript, gardez à l'esprit les différences suivantes :
| Fonctionnalité | API Fitbit Web (ancienne) | API Google Health (identité Google) |
| Point de terminaison du jeton | https://api.fitbit.com/oauth2/token | https://oauth2.googleapis.com/token |
| Bibliothèque d'authentification | Open Source standard | Authentification Google |
| Champ d'application | activité | https://www.googleapis.com/auth/googlehealth.activity_and_fitness |
| ID utilisateur | ID Fitbit encodé renvoyé dans la réponse /oauth2/token | ID utilisateur renvoyé à partir du point de terminaison users.getIdentity |
4. Check-list de fidélisation
- Persistance de la session : ne supprimez pas l'ancienne session de l'API Fitbit Web de l'utilisateur tant que l'access_token de l'API Google Health n'a pas été validé et enregistré dans votre base de données.
- Révocation automatique : une fois la migration de l'API Google Health terminée, utilisez une requête POST au point de terminaison de révocation Fitbit hérité : https://api.fitbit.com/oauth2/revoke. Ainsi, l'utilisateur ne voit pas d'autorisations d'application "en double" dans ses paramètres Fitbit.
- Gestion des erreurs : si un appel Fitbit renvoie une erreur 401 non autorisée, redirigez automatiquement vers le flux OAuth de Google au lieu d'afficher un message d'erreur.