# 如何请求用户为已创建的账户设置密码？

**URL:** https://meta.discourse.org/t/how-to-ask-a-user-to-create-a-password-for-the-account-made-for-him/141825
**Category:** Development
**Tags:** rest-api
**Created:** [2020年二月17日 18:45 UTC](https://meta.discourse.org/t/how-to-ask-a-user-to-create-a-password-for-the-account-made-for-him/141825 "2020-02-17T18:45:58Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![dm.linov](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dm.linov/32/167719_2.png) [@dm.linov](https://meta.discourse.org/u/dm.linov)
#### Post date: [2020年二月17日 18:45 UTC](https://meta.discourse.org/t/how-to-ask-a-user-to-create-a-password-for-the-account-made-for-him/141825/1 "2020-02-17T18:45:58Z")

</div>

我们在网站上有一个反馈表单，主要用于支持咨询。我希望将提交到该表单的问题转化为由 Discourse 驱动的新论坛主题。

我正尝试实现以下操作序列：

1. 根据表单提交的用户名和电子邮件，通过 API 创建一个新用户。
2. 创建由该用户发布的新主题。
3. 向该用户发送一封电子邮件，其中包含该主题的链接，以及 **创建密码的请求** 。

目前，我已在 Discourse 中找到了 **四个** 可能用于步骤 3 的电子邮件模板：“账户已创建”、“通过链接登录”、“忘记密码”和“设置密码”。在 API 文档中，我只找到了一个发送“忘记密码”消息的调用，但这似乎不是最适合我案例的选项。

我的问题：  
a) 其他三条消息（“账户已创建”、“通过链接登录”和“设置密码”）在什么情况下会被发送？  
b) 如何通过 API 发送这些消息？

---

<div class="post-metadata">

### Author: ![david](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/david/32/157490_2.png) [@david](https://meta.discourse.org/u/david)
#### Post date: [2020年二月21日 12:43 UTC](https://meta.discourse.org/t/how-to-ask-a-user-to-create-a-password-for-the-account-made-for-him/141825/3 "2020-02-21T12:43:49Z")

</div>

> [@dm.linov](#):
>
> 在什么情况下会发送其他三条消息（“账户已创建”、“通过链接登录”和“设置密码”）？

当使用“邀请管理员”API 端点，或通过 `admin:invite` rake 任务创建管理员时，会发送 ‘account\_created’ 消息。

‘login via link’（内部称为 `email_login`）会在有人使用“通过电子邮件登录”链接时发送。

‘set password’ 与“忘记密码”相同，适用于数据库中该用户尚无密码的情况。

[quote=“dm.linov, post:1, topic:141825”]

1. 向该用户发送一封包含本主题链接的电子邮件，并附上 **创建密码的请求** 。[/quote]

我认为最佳做法是将新用户创建为“暂存”状态，然后向他们发送该主题的“邀请”。该邀请会直接将其登录到暂存账户，然后引导至该主题。他们不会被要求创建密码，但可以手动操作，或直接使用通过电子邮件登录的选项。

---

<div class="post-metadata">

### Author: ![dm.linov](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dm.linov/32/167719_2.png) [@dm.linov](https://meta.discourse.org/u/dm.linov)
#### Post date: [2020年二月22日 20:05 UTC](https://meta.discourse.org/t/how-to-ask-a-user-to-create-a-password-for-the-account-made-for-him/141825/4 "2020-02-22T20:05:56Z")

</div>

谢谢你，David！

创建“暂存”用户的 API 调用是什么？我以为只能通过电子邮件创建。
