Solución de Dropbox API v2 para el servidor de sincronización de Neotoma
Como parte de mi sprint de trabajo en IndieWebCamp Berlin hoy, logré corregir un error que detenía el espectáculo que estaba en producción para el servidor de sincronización en Neotoma y ejecuté un trabajo de respaldo para mis últimos registros de Foursquare/Swarm.
Como parte de mi sprint de trabajo en IndieWebCamp Berlin hoy, logré corregir un error espectacular que ha estado en producción para sync-server en Neotoma.io aparentemente desde el 28 de septiembre de 2017, cuando Dropbox retiró completamente su API v1 a favor de API v2.
No me di cuenta de este error hasta esta semana, ya que el manejo de errores en producción no estaba configurado para notificarme (por correo electrónico o de otro modo), pero configurar esa notificación ahora es una tarea prioritaria para evitar problemas silenciosos como este en el futuro.
Después de investigar el código, resultó que la implementación de Passport para Dropbox específicamente no pasaba un parámetro apiVersion al inicializar su estrategia y, como tal, estaba utilizando de forma predeterminada la API v1 de Dropbox sin que yo me diera cuenta.
Agregué apiVersion como parámetro aquí y también como un atributo en el modelo de almacenamiento, configurándolo específicamente en "2" para el documento de almacenamiento de Dropbox.
Nota: Este atributo aparentemente necesita ser una cadena, no un número entero, el último de los cuales no funcionó cuando lo intenté.
req.strategy = nuevo pasaporteStrategy.Strategy({
apiVersion: documento.apiVersion,
ID de cliente: documento.id de cliente,
clientSecret: documento.clientSecret,
clave del consumidor: documento.clientId,
ConsumerSecret: documento.clientSecret,
callbackURL: `${req.protocol}://${req.get('host')}${path.resolve('/', Model.modelType(), document.slug, 'auth-callback')}`,
passReqToCallback: verdadero,
campos de perfil: ['id', 'nombre para mostrar', 'correos electrónicos']
}....Como resultado, la autenticación de Dropbox ahora funciona nuevamente y pude ejecutar una tarea de respaldo para mis registros de Foursquare/Swarm, sincronizando los más recientes con mi Dropbox desde la última vez que ejecuté el respaldo a principios del verano.