Neotoma 同步服务器的 Dropbox API v2 修复

作为我今天在柏林 IndieWebCamp 工作冲刺的一部分,我设法修复了 Neotoma 上的同步服务器生产中的一个令人停止的错误,并为我最新的 Foursquare / Swarm 签到运行了备份作业。

作为我今天在 IndieWebCamp Berlin 工作冲刺的一部分,我设法修复了一个令人停止的错误,该错误显然自 2017 年 9 月 28 日 [Dropbox 完全退役其 API 以来,一直在 Neotoma.io 上的 sync-server 生产中出现v1](https://blogs.dropbox.com/developers/2017/09/api-v1-shutdown-details/) 支持 API v2。

直到本周我才意识到这个错误,因为生产中的错误处理尚未设置为通知我(通过电子邮件或其他方式),但设置该通知现在是一项优先任务,以避免将来出现此类无声问题。

深入研究代码后,发现 Dropbox 的 Passport 实现在其策略初始化时没有传递“apiVersion”参数,因此,在我没有意识到的情况下,它默认为 Dropbox 的 API v1。

我添加了“apiVersion”作为参数,也作为[存储上的属性] model](https://github.com/neotoma/sync-server/commit/d9b1f15400201ef962a8dea79a121ad9d996c686#diff-430f49ef85b837131a35d1dd553659aeR23),特别将其设置为“2”用于Dropbox的存储文档。

注意:这个属性显然需要是一个字符串,而不是一个整数,后者在我尝试时失败了。

req.strategy = 新的passportStrategy.Strategy({
  api版本:文档.api版本,
  clientID: 文档.clientId,
  clientSecret:文档.clientSecret,
  ConsumerKey: document.clientId,
  消费者秘密:document.clientSecret,
  callbackURL: `${req.protocol}://${req.get('host')}${path.resolve('/', Model.modelType(), document.slug, 'auth-callback')}`,
  passReqToCallback:真,
  profileFields: ['id', '显示名称', '电子邮件']
}...

因此,Dropbox 身份验证现在再次起作用,我已经能够为我的 Foursquare / Swarm 签到运行备份作业,将自今年夏天早些时候运行备份以来的最新作业同步到我的 Dropbox。

2 最小阅读量technical
分享