无法通过API添加用户

你好!

我们尝试通过 API 添加用户,请求如下:

POST https://discourse.example.de/users
{
    "name": "Bob Tester",
    "email": "example address",
    "password": "#######",
    "username": "testi",
    "active": true,
    "approved": false
}

我们的 API 密钥和用户信息已定义在请求头中。

该请求返回以下响应:

Status: 200 OK
{
    "success": true,
    "active": false,
    "message": "<p>您即将完成!我们已向 <b>example address</b> 发送了一封激活邮件。请按照邮件中的说明激活您的账户。</p><p>如果未收到邮件,请检查您的垃圾邮件文件夹。</p>"
}

但是,Discourse 中似乎并未添加该用户?

在文档的示例响应(Discourse API Docs ID。

有人知道为什么我们的响应中没有返回用户 ID 吗?

响应中的那条消息:

这是确认邮件的内容:

这意味着系统会向用户发送一封确认邮件。一旦用户点击该邮件,账户就会被创建。

你使用的是最新版本的 Discourse 吗?如果你在请求中传入 "active": true,系统就不会发送确认邮件。参见 Creating user via API - #11 by blake

2 个赞

你好!

感谢你的回复,但这并没有解决我的问题。

在我的示例请求中,我使用了参数 "active": true,但在响应中我得到的却是 "active": false,因此用户无法被激活——也许是因为用户尚未创建?

除此之外:

如果我在请求中不发送 "active": true 参数,则不会向用户发送电子邮件。

有什么建议吗?

谢谢!

您能告知您使用的 Discourse 版本吗?这将有助于我们确认是否能够复现您的问题。

好的——我们使用的是 2.6.0.beta5 版本。目前没有可用的更新。

1 个赞

太好了,谢谢!只是想确认您是否使用的是旧版本。

我相当确定在发出此请求时,您的凭据实际上并未正确传递。此端点比较特殊,因为它用于我们的注册表单,实际上无需 API 凭据即可使用。您收到的响应是当用户注册但系统检测到这不是 API 请求时返回的。

您能否尝试发出另一个需要身份验证的 API 请求(例如创建分类),看看是否可行?您还可以查看管理 API 页面,查看密钥上次使用的时间,以确认它是否已正确用于您的用户创建 API 请求。

我通过发出一个不带凭据的 JSON 请求成功复现了您的问题:

不带凭据的 JSON 请求

curl -i -sS -X POST "http://localhost:3000/users.json" -H "Content-Type: application/json" -d "{\"name\": \"8525f374d470a2e3f22c\", \"active\": \"true\", \"username\": \"8525f374d470a2e3f22c\", \"email\": \"8525f374d470a2e3f22c@example.com\", \"password\": \"65d18e465472452771e02b3462260ea1\"}"

HTTP/1.1 200 OK

{"success":true,"active":false,"message":"<p>您快完成了!我们已向 <b>8525f374d470a2e3f22c@example.com</b> 发送了一封激活邮件。请按照邮件中的说明激活您的账户。</p><p>如果未收到邮件,请检查您的垃圾邮件文件夹。</p>"}

对比

带凭据的 JSON 请求

curl -i -sS -X POST "http://localhost:3000/users.json" -H "Content-Type: application/json" -H "Api-Key: 079fb2bb12d3b436bb11bde8eb58aaa9a36560fa7d79b14b3087aa40b1ebc2c4" -H "Api-Username: blake.erickson" -d "{\"name\": \"da4be85b6046f9c9b9e1\", \"active\": \"true\", \"username\": \"da4be85b6046f9c9b9e1\", \"email\": \"da4be85b6046f9c9b9e1@example.com\", \"password\": \"65d6f0589c5f234de4ad31662b3a17a2\"}"

HTTP/1.1 200 OK

{"success":true,"active":true,"message":"您的账户已激活,可以开始使用。","user_id":29}
1 个赞

问题解决了——之前凭证传递不正确。

非常感谢您的帮助,支持太棒了!:slight_smile:

1 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.