Neotoma مطابقت پذیری سرور کے لیے Dropbox API v2 فکس

آج IndieWebCamp برلن میں اپنے ورکنگ سپرنٹ کے ایک حصے کے طور پر، میں نے ایک شو روکنے والے بگ کو ٹھیک کرنے میں کامیاب کیا جو Neotoma پر sync-server کے لیے پروڈکشن میں ہے اور اپنے تازہ ترین Foursquare/Swarm check-ins کے لیے بیک اپ جاب چلاتا ہے۔

As part of my working sprint at IndieWebCamp Berlin today, I managed to fix a show-stopping bug that’s been in production for sync-server on Neotoma.io apparently since September 28, 2017 when Dropbox fully retired its API v1 in favor of API v2.

I wasn’t aware of this bug until this week since error handling in production hasn’t been set to notify me (via email or otherwise), but setting up that notification is now a prioritized task to avoid silent problems like this one in the future.

After digging through the code, it turned out that the Passport implementation for Dropbox specifically was not passing an apiVersion parameter upon initialization of its strategy, and as such, it was defaulting to Dropbox’s API v1 without my realization.

I’ve added apiVersion as a parameter here and also as an attribute on the storage model, specifically setting it to “2” for Dropbox’s storage document.

Note: This attribute apparently needs to be a string, not an integer, the latter of which failed to work for me when attempted.

req.strategy = new passportStrategy.Strategy({
  apiVersion: document.apiVersion,
  clientID: document.clientId,
  clientSecret: document.clientSecret,
  consumerKey: document.clientId,
  consumerSecret: document.clientSecret,
  callbackURL: `${req.protocol}://${req.get('host')}${path.resolve('/', Model.modelType(), document.slug, 'auth-callback')}`,
  passReqToCallback: true,
  profileFields: ['id', 'displayName', 'emails']
}...

As a result, Dropbox authentication now works again and I’ve been able to run a backup job for my Foursquare / Swarm check-ins, syncing the most recent ones to my Dropbox since last running backup earlier in the summer.

2 منٹ پڑھیںtechnical
شیئر کریں۔