Im Rahmen meines heutigen Arbeitssprints beim [IndieWebCamp Berlin](https://indieweb.org/2017/Berlin) ist es mir gelungen, einen auffälligen Fehler zu beheben, der offenbar seit dem 28. September 2017 für [sync-server](https://github.com/neotoma/sync-server) auf [Neotoma.io](https://neotoma.io) in Produktion ist, als [Dropbox seine API vollständig eingestellt hat v1](https://blogs.dropbox.com/developers/2017/09/api-v1-shutdown-details/) zugunsten von API v2.

Ich war mir dieses Fehlers erst diese Woche bewusst, da die Fehlerbehandlung in der Produktion nicht so eingestellt war, dass sie mich benachrichtigt (per E-Mail oder auf andere Weise), aber das Einrichten dieser Benachrichtigung ist jetzt [eine priorisierte Aufgabe](https://github.com/neotoma/sync-server/issues/87), um stille Probleme wie dieses in Zukunft zu vermeiden.

Beim Durchforsten des Codes stellte sich heraus, dass die [Passport](http://www.passportjs.org/)-Implementierung für Dropbox bei der Initialisierung [seiner Strategie](https://github.com/florianheinemann/passport-dropbox-oauth2) speziell keinen „apiVersion“-Parameter übergab und daher ohne mein Wissen standardmäßig auf Dropboxs API v1 zurückgriff.

Ich habe „apiVersion“ [hier als Parameter](https://github.com/neotoma/sync-server/commit/d9b1f15400201ef962a8dea79a121ad9d996c686#diff-25ac49459f3ccaa62fa691b8b449625cR69) und auch als Attribut hinzugefügt [Speichermodell](https://github.com/neotoma/sync-server/commit/d9b1f15400201ef962a8dea79a121ad9d996c686#diff-430f49ef85b837131a35d1dd553659aeR23), insbesondere auf „2“ für das Speicherdokument von Dropbox.

*Hinweis: Dieses Attribut muss offenbar eine Zeichenfolge und keine Ganzzahl sein. Letzteres funktionierte bei mir nicht, als ich es versuchte.*

„
req.strategy = neue 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: wahr,
  ProfileFields: ['id', 'displayName', 'emails']
}...
„

Dadurch funktioniert die Dropbox-Authentifizierung jetzt wieder und ich konnte einen Backup-Job für meine Foursquare-/Swarm-Check-ins ausführen und die aktuellsten seit der letzten Sicherung Anfang des Sommers mit meiner Dropbox synchronisieren.