Вебхуки Patreon не работают

Интересно, сможет ли @Falco или кто-нибудь другой помочь.

Недавно я начал использовать Patreon и настроил сервер Discourse на Droplet в Digital Ocean. Также я установил плагин discourse-patreon и ввёл все ключи и другие данные, следуя этому руководству. Я могу нажать кнопку «Обновить данные Patreon и синхронизировать группы» на странице «Плагин → Patreon → Фильтры», и это работает корректно. Все мои уровни поддержки доступны, и я назначил их соответствующим группам Discourse и так далее.

Всё казалось в порядке, но затем я получил письмо от серверов Patreon со следующим сообщением:
Мы сообщаем вам, что POST-запрос WebHook по адресу https://discourse.martinbaileyphotography.com/patreon/webhook не удался. В результате мы приостановили отправку дальнейших событий на ваш URL.

Я пробовал настроить клиент как с API 1, как указано в этом сообщении, так и с API 2, каждый раз меняя ключи и секреты соответствующим образом. Я также пробовал три устаревших события сверху и шесть снизу с обоими API, но не нашёл ни одной рабочей комбинации.

В логах Discourse я обнаружил следующее сообщение об ошибке:
(patreon) Authentication failure! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detected

Я обращался в службу поддержки Digital Ocean, и они подтвердили, что не блокируют POST-запросы, и не могут придумать никакой причины, по которой это не должно работать в их системе. Поэтому я в тупике. Я не нашёл никакой полезной информации, которая помогла бы мне исправить проблему, поэтому теперь публикую этот запрос здесь (а также на форуме Patreon) в надежде, что кому-то это что-то напомнит. Может ли кто-нибудь дать совет, как исправить эту проблему или что проверить для дальнейшего устранения неполадок?

Заранее благодарю за любую помощь, которую кто-либо сможет предоставить!

С уважением,
Мартин Бейли.

При настройке вебхуков включайте только устаревшие, как объясняется на Configure Patreon integration with Discourse, и настройте секрет в параметрах сайта.

Если они всё ещё не работают, проблема может быть на стороне Patreon. Можете ли вы запросить у их поддержки подробные логи о сбоях?

Спасибо, @Falco,
Я спрошу у них. Они уже сказали мне, что не предоставляют поддержку для API, что очень жаль. Я не знал, что Patreon — это компания с ограниченными возможностями, когда начинал.

Ладно, значит, я буду использовать устаревшие опции. Стоит ли также использовать API v1 и webhook? Я пробовал оба варианта изначально, но уже несколько недель не проверял.

Спасибо за помощь.

Да, пожалуйста, используйте версию v1.

Спасибо, @Falco! Я только что всё откатил обратно и сменил все ключи API и секреты.

Тем не менее, ручной тест возвращает код состояния 200, значит запросы проходят. Также я заметил, когда утром проверял плагин Discourse / Patreon, что данные показывали синхронизацию 5 часов назад. Я пять часов назад спал, так что что-то происходит, но я всё ещё вижу красное сообщение «Webhook Paused» (Вебхук приостановлен), а кнопка «Resume» (Возобновить) приводит к новой ошибке.

В любом случае, я запрослю подробные логи у команды Patreon и посмотрю, что они скажут.

Ещё раз спасибо за помощь.

Привет, @Falco,

Я нашёл ответ от службы поддержки Patreon в своём переполненном почтовом ящике. Они просто сообщают, что не могут предоставить логи. Кроме того, я заметил, что они закрыли свой форум поддержки сообщества.

Эти ошибки всё ещё возникают, хотя синхронизация частично работает: я вижу сообщения о том, что система синхронизировалась, пока я спал. Однако новые спонсоры Patreon всё ещё не добавляются автоматически после внесения взноса. Я обхожу эту проблему, создавая приглашения с доступом к различным категориям в зависимости от уровня нового спонсора, но делать это приходится вручную, что не очень удобно. Также меня беспокоит, что люди, прекратившие поддержку, вероятно, не будут удалены из моего сообщества Discourse. Пока у меня немного спонсоров, и я могу всё проверять вручную, но если участие в моём проекте Patreon начнёт расти, я, скорее всего, потеряю контроль над этим процессом, и всё пойдёт наперекосяк.

В любом случае, я понимаю, что это не совсем ваша проблема, но я очень разочарован тем, что Patreon не предоставляет никакой поддержки для этих интеграций, несмотря на то, что активно используют их в маркетинге, чтобы привлечь людей к использованию своей системы.

С уважением,
Мартин.

Поддержка вебхуков позволяет синхронизации быстрее реагировать на изменения, но плагин будет работать на 100% и без неё. Мы будем выполнять полную синхронизацию каждые 6 часов, чтобы находить новых патронов, а также отзывать доступ у тех, кто перестал поддерживать. Так что вам не стоит беспокоиться об этом.

На всякий случай отметим, что этот плагин был создан на 100% нашей командой в Discourse без какой-либо поддержки со стороны Patreon, поэтому мы сможем поддерживать его работу до тех пор, пока существует их API.