Disable account confirm emails when creating users via API

如果用户确实已创建,响应中应该会包含 user_id。但考虑到你在管理后台中找不到该用户,可能由于某种原因用户并未成功创建。

好的,明白了,你正在开发一个导入器。你不应该通过 API 调用来实现这一点,而是应该创建一个导入脚本,并直接在 Docker 容器内部运行它。

你可以参考 discourse/script/import_scripts at main · discourse/discourse · GitHub 中列出的众多示例。

我可以问问原因吗?
(我有 Discourse 的管理员权限,但没有服务器/Docker 容器的权限,所以我需要请别人来做这件事。)

看起来确实如此!有什么已知的原因吗?是否与某些设置有关?

如果是大规模导入,速度会快 100 倍,而且您可以直接访问 ImportScripts::Base 类的各种方法,这使得创建用户以及导入其他内容(如创建群组、分类、主题和帖子)变得超级简单:

如果需要,您可以编写脚本并让他们来运行。

目前没有发现与此相关的已知问题。以下是一个用于创建用户的 curl 请求示例:

curl -i -sS -X POST "http://localhost:3000/users" \
-H "Content-Type: multipart/form-data;" \
-H "Api-Key: ****" \
-H "Api-Username: system" \
-F "name=cfbcc77ae9f4230d2c25" \
-F "username=cfbcc77ae9f4230d2c25" \
-F "email=cfbcc77ae9f4230d2c25@example.com" \
-F "password=3f348653105f05505f5f1a3ff70ef984" \
-F "active=true" \
-F "user_fields[1]=cfbcc77ae9f4230d2c25" \
-F "user_fields[2]=828c0ec3a76"

返回结果为:

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

可能某些地方发生了变化,因为看起来邮件现在确实已发送,但用户仍然被创建为未激活状态。看起来 active=true 参数并未生效。

1 个赞

我也得承认,我对 Ruby 一无所知::man_facepalming:

因此,我将尝试进一步调查 API 问题。我会尝试运行一个与你类似的调用。只需澄清几点:
a) 端点是 [mydomain]/users.json,对吗?
b) Content-Type 应该是 "multipart/form-data" 还是 "application/json"如 API 文档所述
c) "user_fields" 的用途是什么?

1 个赞

是的,通常您希望为所有路由添加 .json 后缀。是的,您也可以将 content-type 设置为 application/json,并且 user_fields 是可选的,它只是我已有示例脚本的一部分。

2 个赞

成功了!

使用完全相同的 curl 请求(仅替换我的数据)成功创建了一个已激活的用户。
目前还不确定为什么我之前从 Postman 发送类似请求时未能成功。我会进一步调查这个问题,如果有重要发现会在此汇报。

感谢您的帮助!

2 个赞

此问题已通过以下提交解决:

5 个赞

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