Com a part del meu sprint de treball a [IndieWebCamp Berlin](https://indieweb.org/2017/Berlin) avui, he aconseguit arreglar un error d'aturada de l'espectacle que s'ha produït per a [sync-server](https://github.com/neotoma/sync-server) a [Neotoma.io](https://12, aparentment des del 2 de setembre). [Dropbox va retirar completament la seva API v1](https://blogs.dropbox.com/developers/2017/09/api-v1-shutdown-details/) a favor de l'API v2.

No vaig ser conscient d'aquest error fins aquesta setmana, ja que la gestió d'errors en producció no s'ha configurat per notificar-me (per correu electrònic o d'una altra manera), però ara configurar aquesta notificació és [una tasca prioritzada](https://github.com/neotoma/sync-server/issues/87) per evitar problemes silenciosos com aquest en el futur.

Després d'explorar el codi, va resultar que la implementació de [Passport](http://www.passportjs.org/) per a Dropbox específicament no passava un paràmetre "apiVersion" en la inicialització de [la seva estratègia](https://github.com/florianheinemann/passport-dropbox-oauth2), i com a tal, la meva API era v1 per defecte.

He afegit `apiVersion` [com a paràmetre aquí](https://github.com/neotoma/sync-server/commit/d9b1f15400201ef962a8dea79a121ad9d996c686#diff-25ac49459f3cca9162) i també as. un atribut del [model d'emmagatzematge](https://github.com/neotoma/sync-server/commit/d9b1f15400201ef962a8dea79a121ad9d996c686#diff-430f49ef85b837131a35d9ddde5), específicament per a "a3536d59dde2" Document d'emmagatzematge de Dropbox.

*Nota: aparentment, aquest atribut ha de ser una cadena, no un nombre enter, el darrer dels quals no em va funcionar quan ho vaig intentar.*

```
req.strategy = nou passaportStrategy.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: cert,
  profileFields: ['id', 'displayName', 'emails']
}...
```

Com a resultat, ara l'autenticació de Dropbox torna a funcionar i he pogut executar una tasca de còpia de seguretat per als meus registres de Foursquare / Swarm, sincronitzant els més recents amb el meu Dropbox des de la darrera còpia de seguretat executada a principis d'estiu.