通过API生成登录邮件

我希望能够通过 API 触发向用户发送无密码登录电子邮件(用户自行点击“通过电子邮件登录”时会收到的那种),但似乎无法实现。我曾尝试使用“API 逆向工程”技术来实现,但使用全局 API 密钥进行身份验证只会返回主页并且什么也不会触发(不使用 API 密钥时,它似乎需要设置会话 cookie 等)。

我希望实现一个尽可能步骤最少的注册流程;当用户通过其他系统注册时,我会在 Discourse 中创建用户,并且我希望他们收到一封包含临时登录链接的电子邮件,以便直接登录。这一切都是为了减少这个本已繁琐的流程中的摩擦!

有没有什么技巧可以通过 API 实现这一点?

在这种情况下,合适的解决方案是使用 DiscourseConnect 进行隐形登录设置。

您尝试过:

curl -X POST https://meta.discourse.org/u/email-login \
-H "Api-Key: longapikeyhere" \
-H "Api-Username: system" \
--data-raw 'login=email%40gmail.com'

吗?

1 个赞

非常感谢你的回复 Falco。具体来说,使用你建议的 curl 命令,我得到了一个“您正在被重定向”的响应,它会将我重定向回主页。没有触发登录邮件。我之前使用的工具也得到了类似的结果——它会跟随重定向回到主页。

我不想使用 DiscourseConnect,因为注册后唯一需要的登录就是 Discourse。

另外,作为 Discourse 论坛的长期用户(和崇拜者),这是我第一次涉足另一方——API/Webhook 非常棒;易于使用且功能强大。

2 个赞

该端点目前确实无法用于 API 调用。当您为其传递 API 密钥时,您会在这里重定向:

并且由于此路由受到 :verify_authenticity_token CSRF 保护,因此您无法在没有 API 密钥的情况下调用它。

2 个赞

谢谢 - 明白了,我也能理解其中的逻辑。非常感谢您的回复。

1 个赞