Patreon 웹훅 오류

@Falco님이나 다른 분들 중 도와줄 수 있는 분이 있을까요?

최근에 Patreon을 사용하기 시작했고, Digital Ocean Droplet에 Discourse 서버를 설정했습니다. 또한 이 튜토리얼을 따라 discourse-patreon 플러그인을 설치하고 모든 키 등을 입력했습니다. 플러그인 > Patreon > 필터 페이지의 ‘Update Patreon Data & Sync Groups’ 버튼을 클릭할 수 있으며, 이 부분은 정상적으로 작동합니다. 모든 티어가 사용 가능하고, 모두 Discourse 그룹 등에 할당했습니다.

모든 것이 정상적으로 보였지만, 갑자기 Patreon 서버로부터 다음과 같은 이메일을 받았습니다:
“https://discourse.martinbaileyphotography.com/patreon/webhook으로의 WebHook POST가 실패했습니다. 그 결과 해당 URL로 이벤트 전송을 일시 중단했습니다.”

이 포스트에 명시된 API 1과, 키와 시크릿을 각각 변경하여 설정한 API 2를 모두 사용해 보았습니다. 또한 두 API 모두에서 비추천(deprecated) 이벤트 중 위쪽 3개와 아래쪽 6개를 시도해 보았지만, 작동하는 조합을 찾을 수 없습니다.

Discourse 로그에서 다음과 같은 오류 메시지를 발견했습니다:
(patreon) Authentication failure! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detected

Digital Ocean에 문의해 보았는데, POST 요청을 차단하지 않으며 시스템상 이 문제가 발생하는 이유를 알 수 없다고 합니다. 그래서 막막합니다. 이 문제를 해결하는 방법이나 추가적으로 점검해야 할 사항에 대한 유용한 정보를 찾지 못해, 누군가에게 도움이 될 만한 단서가 될지 몰라 여기(Patreon 포럼에도) 게시합니다. 이 문제를 해결하는 방법이나 추가적인 문제 해결을 위해 확인해야 할 사항에 대해 조언을 주실 수 있을까요?

도움 주시는 모든 분들께 미리 감사드립니다!

존경하며,
Martin Bailey.

웹훅을 구성할 때는 Configure Patreon integration with Discourse 설명된 대로 비추천(deprecated)된 웹훅만 활성화하고, 사이트 설정에서 시크릿을 구성해야 합니다.

여전히 실패하는 경우 Patreon 측에 문제가 있을 수 있습니다. 실패에 대한 상세 로그를 그들의 지원팀에 요청해 볼 수 있을까요?

Falco님, 감사합니다.
그들에게 물어보겠습니다. 이미 API에 대한 지원을 제공하지 않는다고 말해 주셨는데, 정말 아쉽네요. 이 일을 시작할 때 패트리온이 기능이 제한된 회사라는 걸 몰랐습니다.

좋아요, 그러면 비추천(deprecated) 옵션을 사용하겠습니다. API v1, webhook도 함께 사용해야 할까요? 처음에는 둘 다 시도해 보았지만, 몇 주간 시도하지 않았습니다.

도와주셔서 감사합니다.

네, v1 버전을 사용해 주세요.

감사합니다, @Falco. 모든 것을 원래대로 되돌리고 모든 API 키와 시크릿을 변경했습니다.

수동 테스트에서는 상태 코드 200이 반환되고 있으므로, 호출은 정상적으로 전달되고 있습니다. 또한 오늘 아침 Discourse / Patreon 플러그인을 확인했을 때, 데이터가 5시간 전에 동기화된 것으로 표시되어 있었습니다. 5시간 전에는 제가 자고 있었으므로, 뭔가 동작은 하고 있는 것 같지만 여전히 빨간색 ‘Webhook Paused’ 메시지가 표시되고 있고, ‘Resume’ 버튼을 누르면 또 다른 오류가 발생하고 있습니다.

어쨌든, Patreon 팀에게 상세 로그를 요청해서 어떤 내용인지 확인해 보겠습니다.

도움 주셔서 다시 한번 감사합니다.

Falco님,

과도한 메일함에서 Patreon 지원팀의 답변을 찾았는데, 그들은 단순히 로그를 제공할 수 없다고만 하였습니다. 또한 커뮤니티 지원 포럼도 폐쇄된 것을 확인했습니다.

일부 동기화 기능은 작동하고 있어서 제가 자는 동안 시스템이 동기화되었다는 메시지가 표시되긴 하지만, 여전히 이러한 오류가 발생하고 있습니다. 새로운 후원자가 기여를 해도 자동으로 추가되지 않는 문제가 여전히 남아 있습니다. 저는 이를 우회하기 위해 새로운 후원자의 등급에 따라 다양한 카테고리에 대한 접근 권한을 포함하는 초대장을 직접 생성하고 있습니다. 하지만 이 초대장을 수동으로 보내야 하므로 매우 매끄럽지 않습니다. 또한, 기여를 중단한 사람들이 제 Discourse 커뮤니티에서 자동으로 제거되지 않을 것 같아 걱정입니다. 현재 후원자 수가 적어 직접 확인할 수는 있지만, Patreon 프로그램을 적극적으로 홍보하여 참여가 늘기 시작하면 이 부분을 놓치게 되어 상황이 통제 불능 상태에 빠질 가능성이 큽니다.

어쨌든, 이것이 직접적으로 당신의 문제는 아니라는 것을 알고 있습니다. 하지만 Patreon이 이러한 통합 기능을 마케팅에 활용하여 사람들이 시스템 사용을 시작하도록 유도하면서도, 해당 통합에 대한 지원을 전혀 제공하지 않는다는 사실에 매우 실망스럽습니다.

감사합니다.
Martin

웹훅(Webhook) 지원 덕분에 동기화가 변경 사항에 더 빠르게 반응하지만, 이 플러그인은 웹훅 없이도 100% 정상 작동합니다. 6시간마다 전체 동기화를 수행하여 새로 가입한 후원자를 등록하고, 더 이상 존재하지 않는 후원자의 접근 권한을 제거합니다. 따라서 이러한 사항에 대해 걱정하실 필요가 없습니다.

참고로, 이 플러그인은 Patreon의 지원 없이 디스코urs 팀이 100% 자체적으로 개발한 것입니다. 따라서 Patreon의 API가 존재하는 한 계속 작동하도록 유지할 수 있습니다.