你好!我非常喜欢使用 Discourse API!
在参考了关于逆向工程 API 的指南后,我在让 API 发送登录链接时遇到了问题。
我这样做的背景
我为本地的黑客空间搭建了一个 SSO 服务,以便用户可以使用黑客空间的会员系统登录我们的 Discourse。
不过,有些人在会员系统中使用的电子邮件地址可能与 Discourse 中的不同。由于启用了 SSO 后本地登录已被禁用,我希望用户能够点击“通过电子邮件发送登录链接”,这样他们就可以登录,然后选择更新他们的电子邮件地址(或者继续使用登录链接,随他们便)。
目标
我想通过 API 向 user@domain.co.uk 发送一个登录链接。
我尝试了以下命令:
curl -X POST "https://discourse.<site>.org.uk/u/email-login" --data "{\"login\":\"user\"%\"40domain.co.uk\"}" -H "Api-Key: xxxxx" -H "Api-Username: system" -H "Content-Type: application/json"
返回的结果是:
<html><body>You are being <a href="https://discourse.<site>.org.uk/">redirected</a>.</body></html>
如果我不包含 API 密钥,则会收到 [BAD CSRF] 错误。
所以我卡住的地方是:如何通过 API 让 Discourse 向 user@domain.co.uk 发送登录链接?
非常感谢任何帮助,我会继续尝试各种方法,看看什么有效。
附:我不希望使用像下面这样的变通方法:
先向 /session/csrf 发送请求并保存 CSRF 令牌,
然后携带该 CSRF 令牌向 /u/email-login 发送请求。
是否仅使用 API 密钥就能完成此操作?
谢谢!
![]()