Aggiungere un'intestazione di autorizzazione per un webhook?

Sto lavorando all’integrazione di un’opzione di iscrizione alla newsletter di Mailchimp nelle registrazioni di nuovi utenti e ho fatto progressi utilizzando questo plugin di @pfaffman GitHub - pfaffman/discourse-mailchimp-webhook · GitHub

Il plugin aggiunge con successo un webhook di “Evento Utente Creato” che appare in /admin/api/web_hooks/new e ho capito dall’API di Mailchimp come impostare l’URL del payload per il webhook in questo modo (con il mio DC e l’ID della lista reali):
https://[my-dc].api.mailchimp.com/3.0/lists/[my-list-id]/members/

Ho creato un nuovo utente e il webhook è stato attivato correttamente, ma ho ricevuto una risposta “API Key Invalid” da Mailchimp. Leggendo il codice del metodo build_webhook_headers, non sembrava che aggiungere la chiave API al campo “Secret” potesse funzionare, poiché ciò crea un’intestazione “X-Discourse-Event-Signature”, anche se l’ho provato comunque e ho ottenuto la stessa risposta.

Come test, ho modificato manualmente il metodo build_webhook_headers e inserito l’intestazione di autorizzazione che l’API di Mailchimp si aspetta, e questo ha funzionato (ho ricevuto una risposta di successo e il nuovo membro è apparso sul lato di Mailchimp):

headers['Authorization'] = 'apikey my-key-here'

Ovviamente modificare direttamente Discourse non è una soluzione praticabile, ma ora sono bloccato su come inserire questa intestazione di autorizzazione nella mia richiesta webhook. Sembra esserci un modo per arricchire il corpo della richiesta con :after_build_web_hook_body, anche se non ho trovato un metodo simile per l’intestazione.

Qualsiasi aiuto per indicarmi la direzione giusta sarebbe molto apprezzato. Grazie!

Volevo fare un aggiornamento e vedere se qualcuno potrebbe conoscere una soluzione a questa domanda… Non sono ancora riuscito a risolverla. Ho temporaneamente deciso di utilizzare il mio plugin per sovrascrivere il metodo build_webhook_headers della classe Jobs::EmitWebHookEvent, anche se sono consapevole che questa non è una soluzione ideale.

Grazie in anticipo!

Ciao a tutti,

Quindi non è possibile impostare un header Authorization sul mio webhook?

Allora a cosa servono i webhook? Sembra che il 99% dei webhook utili richieda questo header.

:face_with_raised_eyebrow:

Ho un requisito simile in cui devo inviare i dettagli del nuovo utente a una lista di Mailchimp e ho incontrato lo stesso problema descritto sopra. Tuttavia, ho trovato una soluzione/una soluzione alternativa per questo problema.

Poiché l’API di Mailchimp utilizza l’autenticazione HTTP Basic quando si fornisce la chiave API con la richiesta, è possibile includere la chiave anche nell’URL che si sta chiamando (invece dell’intestazione Authorization più comune).

Quindi, nel mio caso, ho impostato l’URL del payload del webhook su:
https://user:[my-api-key]@[my-dc].api.mailchimp.com/3.0/lists/[my-list-id]/members/

E sembra funzionare bene, poiché ora l’utente viene aggiunto con successo alla lista di Mailchimp.