Gostaria de saber se @Falco ou alguém mais poderia ajudar.
Recentemente comecei a usar o Patreon e configurei um servidor Discourse em um Droplet da Digital Ocean. Também instalei o plugin discourse-patreon e inseri todas as chaves etc., seguindo este tutorial. Consigo clicar no botão “Update Patreon Data & Sync Groups” na página Plugin > Patreon > Filtros, e isso funciona perfeitamente. Todos os meus níveis estão disponíveis e atribuí todos eles a Grupos do Discourse etc.
Tudo parecia estar certo, mas então recebi um e-mail dos servidores do Patreon informando:
Estamos escrevendo para informar que um POST de WebHook para https://discourse.martinbaileyphotography.com/patreon/webhook falhou. Como resultado, pausamos o envio de mais eventos para sua URL.
Tentei configurar o cliente tanto com a API 1, conforme especificado neste post, quanto com a API 2, alterando as chaves e segredos de acordo a cada vez, e testei os três eventos obsoletos superiores e os seis inferiores com ambas as APIs, mas não encontrei nenhuma combinação que funcione.
Nos meus logs do Discourse, encontrei esta mensagem de erro:
(patreon) Falha de autenticação! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detectado
Perguntei à Digital Ocean e eles confirmaram que não bloqueiam solicitações POST e não conseguem imaginar nenhum motivo em seu sistema que explicaria isso não funcionar, então estou sem ideias. Não consigo encontrar nenhuma informação útil para me ajudar a corrigir o problema, então estou postando aqui (e no fórum do Patreon) na esperança de que isso lembre alguém. Alguém pode oferecer algum conselho sobre como corrigir isso ou o que verificar para solucionar o problema mais a fundo?
Obrigado antecipadamente por qualquer ajuda que alguém possa fornecer!
Ao configurar webhooks, você deve habilitar apenas os obsoletos, conforme explicado em Configure Patreon integration with Discourse, e configurar o segredo nas configurações do site.
Se eles ainda falharem, pode ser um problema do lado do Patreon. Você pode solicitar à equipe de suporte deles logs detalhados sobre as falhas?
Vou perguntar a eles. Eles já me disseram que não oferecem suporte para a API, o que é uma pena. Eu não percebi que o Patreon é uma empresa limitada quando comecei isso.
Ok, então usarei as opções descontinuadas. Devo usar uma API v1, webhook também? Eu tentei ambos originalmente, mas não tento há algumas semanas.
Obrigado, @Falco. Acabei de reverter tudo e troquei todas as chaves e segredos da API. O teste manual está retornando o código de status 200, então as chamadas estão sendo realizadas. Também notei, ao verificar o plugin Discourse / Patreon esta manhã, que os dados haviam sido sincronizados 5 horas atrás. Eu estava dormindo cinco horas atrás, então algo está acontecendo, mas ainda vejo a mensagem vermelha “Webhook Paused” e o botão “Resume” resulta em outro erro.
De qualquer forma, solicitarei os logs detalhados da equipe do Patreon e verei o que eles dizem.
Encontrei uma resposta do Suporte do Patreon na minha caixa de entrada sobrecarregada, e eles simplesmente dizem que não podem fornecer os logs. Também vejo que eles fecharam o fórum de suporte da comunidade.
Ainda estou vendo esses erros, embora alguma sincronização esteja funcionando, pois vejo mensagens que mostram que o sistema sincronizou enquanto eu dormia, mas novos Patreons ainda não estão sendo adicionados automaticamente quando eles fazem uma contribuição. Estou contornando isso criando convites que incluem acesso a várias categorias de acordo com o nível do novo patrono, mas tenho que enviá-los manualmente, então não é muito eficiente. Também estou preocupado que as pessoas que param de contribuir provavelmente não serão removidas da minha comunidade Discourse e, embora eu ainda tenha um pequeno número de patronos e pudesse verificar, se eu começar a ter uma boa participação ao promover meu programa Patreon, provavelmente perderei o controle disso e as coisas sairão dos trilhos.
De qualquer forma, sei que não é seu problema em si, mas estou realmente decepcionado que o Patreon esteja oferecendo suporte zero para essas integrações, apesar de usá-las em seu marketing para fazer as pessoas começarem a usar seu sistema.
O suporte a webhook faz com que a sincronização reaja às mudanças mais rapidamente, mas o plugin funcionará 100% sem ele. Faremos uma sincronização completa a cada 6 horas e capturaremos novos apoiadores, além de remover o acesso de apoiadores que saíram. Portanto, você não precisa se preocupar com esse tipo de coisa.
Pelo que vale, este plugin foi 100% criado por nós no Discourse sem o apoio do Patreon, então somos capazes de mantê-lo funcionando enquanto a API deles existir.