اجرای نمونه

برای مهاجرت از API وب قدیمی Fitbit به API سلامت گوگل، شما از کتابخانه‌های عمومی OAuth2 به کتابخانه احراز هویت گوگل منتقل خواهید شد. در ادامه یک پیشنهاد معماری و یک پیاده‌سازی شبه‌کد نوشته شده در جاوا اسکریپت برای مدیریت این حالت "کتابخانه دوگانه" ارائه شده است.

۱. «سوئیچ میان‌افزار»

از آنجایی که نمی‌توانید همه کاربران را به طور همزمان منتقل کنید، backend شما باید بر اساس 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);
  }
}

۲. جریان تجربه کاربری (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 });
});

۳. گذارهای فنی کلیدی

هنگام نوشتن اسکریپت‌های مهاجرت جاوا اسکریپت، این تفاوت‌ها را در نظر داشته باشید:

ویژگی رابط برنامه‌نویسی کاربردی وب فیت‌بیت (قدیمی) رابط برنامه‌نویسی کاربردی گوگل هلث (گوگل-هویت)
نقطه پایانی توکن https://api.fitbit.com/oauth2/token https://oauth2.googleapis.com/token
کتابخانه Auth استاندارد متن‌باز گوگل ادوردز
دامنه فعالیت https://www.googleapis.com/auth/googlehealth.activity_and_fitness
شناسه کاربری شناسه رمزگذاری شده Fitbit در پاسخ /oauth2/token بازگردانده شد شناسه کاربری از نقطه پایانی users.getIdentity بازگردانده می‌شود

۴. چک لیست حفظ مشتری

  • ماندگاری جلسه : تا زمانی که access_token مربوط به Google Health API با موفقیت تأیید و در پایگاه داده شما ذخیره نشده است، جلسه قدیمی Fitbit Web API کاربر را پاک نکنید.
  • لغو خودکار : پس از تکمیل مهاجرت API گوگل هلث، از یک درخواست POST به نقطه پایانی لغو قدیمی Fitbit استفاده کنید: https://api.fitbit.com/oauth2/revoke. این تضمین می‌کند که کاربر مجوزهای برنامه "تکراری" را در تنظیمات Fitbit خود مشاهده نمی‌کند.
  • مدیریت خطا : اگر یک تماس Fitbit خطای ۴۰۱ Unauthorized را برگرداند، به جای نمایش پیام خطا، به طور خودکار به جریان Google OAuth هدایت می‌شود.