是否有用于设置用户的主要组的API

理想情况下,我想在我邀请用户时将主组设置为我正在邀请加入的组,但我没有看到这样做的方法。有没有办法通过 API 设置用户的主组?

谢谢

我认为您可以通过 updateUser 操作来更新用户设置:

1 个赞

感谢您的提示——我尝试使用了它——我更新了 primary_group_nameprimary_group_id,甚至还更新了组数组条目 ['primary_group'] = true——当我调用 update_user 时,我得到了一个 200 回复——使用了 gem,但还没有成功。我明天会仔细看看,看看是否有任何迹象表明出了什么问题。但我没有发现任何明显的问题。

这是我运行并从服务器获得 200 代码的代码:

client = DiscourseApi::Client.new("https://myforumurl.example.com")
client.api_key = '用于测试此功能的具有全局权限的 api 密钥'
client.api_username = '我的管理员用户名——我认为这无关紧要'
user = client.user('joepowell')
user['primary_group_name'] = 'dojo'
user['primary_group_id'] = 42
# 这是组数组中的组 42
user['groups'][2]['primary_group'] = true
client.update_user('joepowell', user)
1 个赞

请参阅逆向工程 Discourse API。这是了解 API 最可靠的方法,而且它始终是最新的。

4 个赞

太好了,谢谢你 :)。我明天早上做完之后会在这里回复 :slight_smile:

2 个赞

我能够使用以下 Ruby 代码来更新主组 ID。它似乎尚未通过 gem 支持(我在代码中搜索了对 primary_group_id 的引用,但没有发现任何看起来可以这样工作的)。

require 'curb'
http = Curl.put('https://yourforum.com/admin/users/###user_id###/primary_group?primary_group_id=###group_id###') do | http |
  http.headers['Api-Key'] = 'your-api-key';
  http.headers['Api-Username'] = 'your-api-username';
  http.headers['Content-Type'] = 'application/x-www-form-urlencoded'
end

1 个赞

我认为使用这些方法向 gem 不支持的路径发出请求是可以的:

所以你可以这样做:

 response = client.put("admin/users/4/primary_group", primary_group_id: 43)
1 个赞

啊,太好了,谢谢 – 我想我可能会在这里更新代码后提交一个拉取请求:

但我现在正忙于让事情运行起来,所以还需要一段时间才能着手修改 Discourse 代码本身。我真的很喜欢 Discourse – 曾有人推荐我试用 Flarum,但说实话,根本无法与之相比,对于任何想要做一些不寻常的事情的人来说,Discourse 简直是另一个档次的。

谢谢

2 个赞

无法通过 API 更改主组? :frowning:

如果你能通过用户体验(UX)进行更改,那么你也可以通过 API 进行更改。请参阅 逆向工程 Discourse API

哦,但如果你指的是通过 Gem,那我不知道。抱歉。

1 个赞

感谢您的回复 @pfaffman

我尝试了反向代理,但没有成功,我收到了 404 未找到错误 :frowning:

/admin/users/barto_95/primary_group.json:

{
	"errors": [
		"L'URL ou la ressource demandée n'a pas été retrouvée."
	],
	"error_type": "not_found"
}

并且使用
/admin/users/2/primary_group.json: (2 = 用户 barto_95 的 ID)

{
	"errors": [
		"L'accès à la ressource demandée n'est pas autorisé."
	],
	"error_type": "invalid_access"
}

如果我在浏览器中查看带有 URL /admin/users/2/primary_group.json 的页面,我可以看到 json

用于测试 API 的请求:


curl --request PUT \
  --url 'https://xxxxxr/admin/users/2/primary_group.json?=' \
  --header 'Api-Key: a7bb1199xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdecbc7b41658' \
  --header 'Apu-Username: Equipe_HACF' \
  --header 'Content-Type: application/json' \
  --data '{
	"primary_group_id": "67"
}'

:frowning: 感谢您的帮助

该用户是管理员吗?我最好的猜测是权限问题。以下一项或多项可能出错:用户错误、密钥错误、密钥权限错误。

1 个赞

是的,问题在于我使用的用户权限

谢谢 :slight_smile:

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