我正在尝试将 Mailchimp 新闻订阅选项集成到新用户注册流程中,并已通过使用 @pfaffman 提供的此插件取得了一些进展:GitHub - pfaffman/discourse-mailchimp-webhook · GitHub
该插件成功添加了一个“用户创建事件”(User Created Event)网络钩子,该钩子出现在 /admin/api/web_hooks/new 页面。我根据 Mailchimp API 文档 配置了网络钩子的 Payload URL,格式如下(使用我实际的 DC 和列表 ID):
https://[my-dc].api.mailchimp.com/3.0/lists/[my-list-id]/members/
我创建了一个新用户,网络钩子成功触发,但 Mailchimp 返回了“API Key Invalid”(API 密钥无效)的响应。通过阅读 build_webhook_headers 方法的代码,我发现将 API 密钥添加到“Secret”字段似乎不起作用,因为这样只会生成一个“X-Discourse-Event-Signature”头部。不过我还是试了一下,结果仍然相同。
作为测试,我手动编辑了 build_webhook_headers 方法,插入了 Mailchimp API 所期望的授权头部,结果成功了(我收到了成功响应,并且新成员也出现在 Mailchimp 端):
headers['Authorization'] = 'apikey my-key-here'
显然,直接修改 Discourse 代码并不是可行的解决方案。但我现在卡住了,不知道如何将这个授权头部添加到我的网络钩子请求中。看起来可以通过 :after_build_web_hook_body 来增强请求体,但我尚未找到类似的方式来操作请求头。
如果有任何指引能帮我找到正确的方向,我将不胜感激。谢谢!