नियोटोमा सिंक सर्वर के लिए ड्रॉपबॉक्स एपीआई v2 फिक्स
आज IndieWebCamp बर्लिन में मेरे कामकाजी स्प्रिंट के हिस्से के रूप में, मैं एक शो-स्टॉपिंग बग को ठीक करने में कामयाब रहा जो नियोटोमा पर सिंक-सर्वर के लिए उत्पादन में था और मेरे नवीनतम फोरस्क्वेयर / स्वार्म चेक-इन के लिए बैकअप कार्य चला रहा था।
आज IndieWebCamp बर्लिन पर मेरे कामकाजी स्प्रिंट के हिस्से के रूप में, मैं एक शो-स्टॉपिंग बग को ठीक करने में कामयाब रहा जो Neotoma.io पर सिंक-सर्वर के लिए उत्पादन में रहा है, जाहिरा तौर पर 28 सितंबर, 2017 से जब ड्रॉपबॉक्स ने एपीआई v2 के पक्ष में अपने एपीआई v1 को पूरी तरह से बंद कर दिया।
मुझे इस सप्ताह तक इस बग के बारे में पता नहीं था क्योंकि उत्पादन में त्रुटि प्रबंधन को मुझे सूचित करने के लिए सेट नहीं किया गया है (ईमेल या अन्यथा के माध्यम से), लेकिन भविष्य में इस तरह की मूक समस्याओं से बचने के लिए उस अधिसूचना को स्थापित करना अब एक प्राथमिकता वाला कार्य है।
कोड को खंगालने के बाद, यह पता चला कि ड्रॉपबॉक्स के लिए पासपोर्ट कार्यान्वयन विशेष रूप से इसकी रणनीति के आरंभ होने पर apiVersion पैरामीटर को पास नहीं कर रहा था, और इस तरह, यह मेरे अहसास के बिना ड्रॉपबॉक्स के एपीआई v1 पर डिफ़ॉल्ट हो रहा था।
मैंने apiVersion जोड़ा है यहाँ एक पैरामीटर के रूप में और इसके अलावा स्टोरेज मॉडल पर एक विशेषता, विशेष रूप से इसे ड्रॉपबॉक्स के लिए "2" पर सेट कर रही है भंडारण दस्तावेज़.
ध्यान दें: यह विशेषता स्पष्ट रूप से एक स्ट्रिंग होनी चाहिए, पूर्णांक नहीं, जिसका बाद वाला प्रयास करने पर मेरे लिए काम करने में विफल रहा।
req.strategy = नया पासपोर्ट रणनीति.रणनीति({
एपीआईसंस्करण: दस्तावेज़.एपीआईसंस्करण,
क्लाइंटआईडी: document.clientId,
क्लाइंटसीक्रेट: दस्तावेज़.क्लाइंटसीक्रेट,
उपभोक्ताकुंजी: document.clientId,
कंज्यूमर सीक्रेट: document.clientSecret,
कॉलबैकयूआरएल: `${req.protocol}://${req.get('host')}${path.resolve('/', model.modelType(), document.slug, 'auth-callback')}`,
passReqToCallback: सत्य,
प्रोफ़ाइल फ़ील्ड: ['आईडी', 'डिस्प्लेनाम', 'ईमेल']
}...परिणामस्वरूप, ड्रॉपबॉक्स प्रमाणीकरण अब फिर से काम करता है और मैं अपने फोरस्क्वेयर / स्वार्म चेक-इन के लिए बैकअप कार्य चलाने में सक्षम हूं, गर्मियों में आखिरी बार बैकअप चलाने के बाद से सबसे हालिया को मेरे ड्रॉपबॉक्स में सिंक कर रहा हूं।