如何通过API使用用户ID(非用户名)更新用户?

我希望我的应用程序能够更新用户关联的 Discourse 账户信息:具体包括显示名称以及用户所属的群组(例如,当他们在我的应用中被提升时,他们也会同时被添加到另一个论坛群组中)。

我原本打算在我的应用程序的用户表中存储一个“Discourse 成员 ID”引用,并利用该 ID 进行更新操作,例如向 POST /users/{id}.json 发送类似 {"name": "new name"} 的请求负载。但看起来所有的 API 路由都要求使用 username 而不是 id

我不明白为什么这是默认设置:用户难道不能更改他们的用户名吗?如果用户更改了用户名,似乎会导致集成失效。

我该如何使用一个一致的标识符(例如 id)来可靠地进行此类更改?

目前,我认为您的最佳方案是发起两次 API 请求:第一次通过 根据 ID 获取用户 来获取用户名,第二次请求则根据用户名进行更新。

虽然存在通过 external_id 更新用户的选项,但我认为在未启用单点登录(SSO)的情况下无法使用此功能。这种方式下,Discourse 会存储您应用程序中用户的 ID,而不是反过来。

谢谢,我发帖后也有过类似的顿悟时刻。