Sebagai bagian dari sprint kerja saya di [IndieWebCamp Berlin](https://indieweb.org/2017/Berlin) hari ini, saya berhasil memperbaiki bug yang menghentikan pertunjukan yang sedang diproduksi untuk [sync-server](https://github.com/neotoma/sync-server) di [Neotoma.io](https://neotoma.io) tampaknya sejak 28 September 2017 ketika [Dropbox menghentikan API-nya sepenuhnya v1](https://blogs.dropbox.com/developers/2017/09/api-v1-shutdown-details/) mendukung API v2.

Saya baru menyadari adanya bug ini pada minggu ini karena penanganan kesalahan dalam produksi belum disetel untuk memberi tahu saya (melalui email atau lainnya), namun menyiapkan notifikasi tersebut sekarang menjadi [tugas yang diprioritaskan](https://github.com/neotoma/sync-server/issues/87) untuk menghindari masalah diam-diam seperti ini di masa mendatang.

Setelah menggali lebih dalam kodenya, ternyata penerapan [Passport](http://www.passportjs.org/) untuk Dropbox khususnya tidak meneruskan parameter `apiVersion` saat inisialisasi [strateginya](https://github.com/florianheinemann/passport-dropbox-oauth2), dan dengan demikian, API v1 Dropbox ditetapkan secara default tanpa saya sadari.

Saya telah menambahkan `apiVersion` [sebagai parameter di sini](https://github.com/neotoma/sync-server/commit/d9b1f15400201ef962a8dea79a121ad9d996c686#diff-25ac49459f3ccaa62fa691b8b449625cR69) dan juga sebagai atribut pada [model penyimpanan](https://github.com/neotoma/sync-server/commit/d9b1f15400201ef962a8dea79a121ad9d996c686#diff-430f49ef85b837131a35d1dd553659aeR23), khususnya menyetelnya ke “2” untuk dokumen penyimpanan Dropbox.

*Catatan: Atribut ini tampaknya harus berupa string, bukan bilangan bulat, yang terakhir gagal berfungsi untuk saya ketika dicoba.*

```
req.strategy = pasporStrategi baru.Strategi({
  apiVersion: dokumen.apiVersion,
  ID klien: dokumen.clientId,
  Rahasia Klien: dokumen.Rahasia Klien,
  kunci konsumen: document.clientId,
  Rahasia Konsumen: dokumen.Rahasia Klien,
  callbackURL: `${req.protocol}://${req.get('host')}${path.resolve('/', Model.modelType(), document.slug, 'auth-callback')}`,
  passReqToCallback: benar,
  profileFields: ['id', 'displayName', 'email']
}...
```

Hasilnya, autentikasi Dropbox kini berfungsi kembali dan saya dapat menjalankan tugas pencadangan untuk check-in Foursquare / Swarm saya, menyinkronkan yang terbaru ke Dropbox saya sejak terakhir kali menjalankan pencadangan pada awal musim panas.