आज [IndieWebCamp बर्लिन](https://indieweb.org/2017/Berlin) पर मेरे कामकाजी स्प्रिंट के हिस्से के रूप में, मैं एक शो-स्टॉपिंग बग को ठीक करने में कामयाब रहा जो [Neotoma.io](https://neotoma.io) पर [सिंक-सर्वर](https://github.com/neotoma/sync-server) के लिए उत्पादन में रहा है, जाहिरा तौर पर 28 सितंबर, 2017 से जब [ड्रॉपबॉक्स ने एपीआई v2 के पक्ष में अपने एपीआई v1 को पूरी तरह से बंद कर दिया](https://blogs.dropbox.com/developers/2017/09/api-v1-shutdown-details/)।

मुझे इस सप्ताह तक इस बग के बारे में पता नहीं था क्योंकि उत्पादन में त्रुटि प्रबंधन को मुझे सूचित करने के लिए सेट नहीं किया गया है (ईमेल या अन्यथा के माध्यम से), लेकिन भविष्य में इस तरह की मूक समस्याओं से बचने के लिए उस अधिसूचना को स्थापित करना अब [एक प्राथमिकता वाला कार्य](https://github.com/neotoma/sync-server/issues/87) है।

कोड को खंगालने के बाद, यह पता चला कि ड्रॉपबॉक्स के लिए [पासपोर्ट](http://www.passportjs.org/) कार्यान्वयन विशेष रूप से [इसकी रणनीति](https://github.com/फ़्लोरियनहेनमैन/पासपोर्ट-ड्रॉपबॉक्स-oauth2) के आरंभ होने पर `apiVersion` पैरामीटर को पास नहीं कर रहा था, और इस तरह, यह मेरे अहसास के बिना ड्रॉपबॉक्स के एपीआई v1 पर डिफ़ॉल्ट हो रहा था।

मैंने `apiVersion` जोड़ा है [यहाँ एक पैरामीटर के रूप में](https://github.com/neotoma/sync-server/commit/d9b1f15400201ef962a8dea79a121ad9d996c686#diff-25ac49459f3ccaa62fa691b8b449625cR69) और इसके अलावा [स्टोरेज मॉडल](https://github.com/neotoma/sync-server/commit/d9b1f15400201ef962a8dea79a121ad9d996c686#diff-430f49ef85b837131a35d1dd553659aeR23) पर एक विशेषता, विशेष रूप से इसे ड्रॉपबॉक्स के लिए "2" पर सेट कर रही है भंडारण दस्तावेज़.

*ध्यान दें: यह विशेषता स्पष्ट रूप से एक स्ट्रिंग होनी चाहिए, पूर्णांक नहीं, जिसका बाद वाला प्रयास करने पर मेरे लिए काम करने में विफल रहा।*

```
req.strategy = नया पासपोर्ट रणनीति.रणनीति({
  एपीआईसंस्करण: दस्तावेज़.एपीआईसंस्करण,
  क्लाइंटआईडी: document.clientId,
  क्लाइंटसीक्रेट: दस्तावेज़.क्लाइंटसीक्रेट,
  उपभोक्ताकुंजी: document.clientId,
  कंज्यूमर सीक्रेट: document.clientSecret,
  कॉलबैकयूआरएल: `${req.protocol}://${req.get('host')}${path.resolve('/', model.modelType(), document.slug, 'auth-callback')}`,
  passReqToCallback: सत्य,
  प्रोफ़ाइल फ़ील्ड: ['आईडी', 'डिस्प्लेनाम', 'ईमेल']
}...
```

परिणामस्वरूप, ड्रॉपबॉक्स प्रमाणीकरण अब फिर से काम करता है और मैं अपने फोरस्क्वेयर / स्वार्म चेक-इन के लिए बैकअप कार्य चलाने में सक्षम हूं, गर्मियों में आखिरी बार बैकअप चलाने के बाद से सबसे हालिया को मेरे ड्रॉपबॉक्स में सिंक कर रहा हूं।