Correção da API v2 do Dropbox para servidor de sincronização Neotoma
Como parte do meu sprint de trabalho no IndieWebCamp Berlin hoje, consegui consertar um bug que estava em produção para o servidor de sincronização no Neotoma e executei um trabalho de backup para meus check-ins mais recentes do Foursquare/Swarm.
Como parte do meu sprint de trabalho no IndieWebCamp Berlin hoje, consegui corrigir um bug que estava em produção para o sync-server no Neotoma.io, aparentemente desde 28 de setembro de 2017, quando o Dropbox retirou totalmente sua API v1 em favor da API v2.
Eu não estava ciente desse bug até esta semana, já que o tratamento de erros na produção não foi configurado para me notificar (por e-mail ou de outra forma), mas configurar essa notificação agora é uma tarefa priorizada para evitar problemas silenciosos como este no futuro.
Depois de pesquisar o código, descobri que a implementação do Passport para o Dropbox especificamente não estava passando um parâmetro apiVersion na inicialização de sua estratégia e, como tal, estava padronizando para a API v1 do Dropbox sem que eu percebesse.
Adicionei apiVersion como parâmetro aqui e também como um atributo no modelo de armazenamento, definindo-o especificamente como “2” para o documento de armazenamento do Dropbox.
Nota: Este atributo aparentemente precisa ser uma string, não um número inteiro, o último dos quais não funcionou para mim quando tentei.
req.strategy = novopassportStrategy.Strategy({
apiVersion: document.apiVersion,
ID do cliente: documento.clientId,
clienteSecret: document.clientSecret,
chave do consumidor: document.clientId,
consumerSecret: document.clientSecret,
callbackURL: `${req.protocol}://${req.get('host')}${path.resolve('/', Model.modelType(), document.slug, 'auth-callback')}`,
passReqToCallback: verdadeiro,
profileFields: ['id', 'displayName', 'e-mails']
}...Como resultado, a autenticação do Dropbox agora funciona novamente e consegui executar uma tarefa de backup para meus check-ins do Foursquare/Swarm, sincronizando os mais recentes com meu Dropbox desde a última execução de backup no início do verão.