Исправление Dropbox API v2 для сервера синхронизации Neotoma
Сегодня в рамках моего рабочего спринта на IndieWebCamp в Берлине мне удалось исправить досадную ошибку, которая наблюдалась на сервере синхронизации на Neotoma, и запустить задание резервного копирования для моих последних чекинов в Foursquare/Swarm.
Сегодня в рамках моего рабочего спринта на IndieWebCamp Berlin мне удалось исправить ошеломляющую ошибку, которая наблюдалась для sync-server на Neotoma.io, очевидно, с 28 сентября 2017 года, когда Dropbox полностью отказался от своего API v1 в пользу API v2.
Я не знал об этой ошибке до этой недели, поскольку обработка ошибок в производстве не была настроена на уведомление меня (по электронной почте или другим способом), но настройка этого уведомления теперь является приоритетной задачей, чтобы избежать подобных проблем в будущем.
Покопавшись в коде, выяснилось, что реализация Passport для Dropbox конкретно не передавала параметр apiVersion при инициализации своей стратегии, и поэтому без моего ведома по умолчанию использовалась Dropbox API v1.
Я добавил apiVersion здесь в качестве параметра, а также в качестве атрибут модель хранилища, специально установив для него значение «2» для хранилища Dropbox. документ.
Примечание: очевидно, что этот атрибут должен быть строкой, а не целым числом, последнее из которых у меня не сработало при попытке.
req.strategy = новый паспортStrategy.Strategy({
apiVersion: document.apiVersion,
clientID: document.clientId,
clientSecret: document.clientSecret,
ConsumerKey: document.clientId,
потребительскийсекрет: document.clientSecret,
callbackURL: `${req.protocol}://${req.get('host')}${path.resolve('/', Model.modelType(), document.slug, 'auth-callback')}`,
passReqToCallback: правда,
ProfileFields: ['id', 'displayName', 'email']
}...В результате аутентификация Dropbox теперь снова работает, и я смог запустить задание резервного копирования для моих отметок Foursquare/Swarm, синхронизируя самые последние из них с моим Dropbox с момента последнего запуска резервного копирования ранее летом.