Beispielimplementierung

Wenn Sie von der alten Fitbit Web API zur Google Health API migrieren, wechseln Sie von allgemeinen OAuth2-Bibliotheken zur Google Auth Library. Im Folgenden finden Sie einen Architekturvorschlag und eine in JavaScript geschriebene Pseudocode-Implementierung für diesen „Dual-Library“-Zustand.

1. Der „Middleware Switch“

Da Sie nicht alle Nutzer gleichzeitig migrieren können, muss Ihr Backend anhand der aktuellen apiVersion des Nutzers, die in Ihrer Datenbank gespeichert ist, ermitteln, welche Bibliothek verwendet werden soll.

Implementierung

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-Ablauf migrieren

Verwenden Sie das Muster Unterbrechen und upgraden, um die Kundenbindung zu maximieren. So wird der Nutzer erst dann zum erneuten Anmelden aufgefordert, wenn er die App bereits verwendet.

Weiterleitungslogik

Wenn ein Fitbit Web API-Nutzer auf eine bestimmte Funktion zugreift, wird die Migration ausgelöst:

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. Wichtige technische Umstellungen

Beachten Sie beim Schreiben Ihrer JavaScript-Migrationsskripts die folgenden Unterschiede:

Feature Fitbit Web API (Legacy) Google Health API (Google-Identität)
Token-Endpunkt https://api.fitbit.com/oauth2/token https://oauth2.googleapis.com/token
Auth-Bibliothek Standard-Open-Source Google Auth
Umfang Aktivität https://www.googleapis.com/auth/googlehealth.activity_and_fitness
Nutzer-ID In der Antwort von /oauth2/token zurückgegebene codierte Fitbit-ID Nutzer-ID, die vom Endpunkt „users.getIdentity“ zurückgegeben wird

4. Checkliste zur Kundenbindung

  • Sitzungsdauer: Löschen Sie die alte Fitbit Web API-Sitzung des Nutzers erst, wenn das Google Health API-access_token erfolgreich bestätigt und in Ihrer Datenbank gespeichert wurde.
  • Automatisch widerrufen: Wenn die Migration der Google Health API abgeschlossen ist, senden Sie eine POST-Anfrage an den alten Fitbit-Widerrufsendpunkt: https://api.fitbit.com/oauth2/revoke. Dadurch wird verhindert, dass dem Nutzer in seinen Fitbit-Einstellungen „doppelte“ App-Berechtigungen angezeigt werden.
  • Fehlerbehandlung: Wenn ein Fitbit-Aufruf den Fehler „401 Unauthorized“ zurückgibt, leite automatisch zum Google-OAuth-Ablauf weiter, anstatt eine Fehlermeldung anzuzeigen.