创建用户 external_ids 参数

我正在尝试编写一个函数来导入我们外部站点(第三方,我只负责中间件)的所有现有用户,并且我正在尝试使用 createUser 函数。它工作正常,除了 external_ids 参数。无论我发送什么(我尝试过数组、对象……你懂的),外部 ID 都不会保存,但用户会被创建。没有错误。

external_ids 对象是否有特定的格式?

我看到了 sso_sync 解决方案,但我宁愿不走那条路,尤其是因为 external_ids 参数已包含在 API 中。

有什么建议吗?提前感谢。

您好,欢迎 :wave:

具体到这个问题,我认为期望的格式是这样的:

{ <provider_name>: <unique_id> }

1 个赞

谢谢您的回复,欢迎您!

我尝试了您发送的格式,请求已通过,但外部 ID 仍未保存 :confused: "external_ids": {},

这是我正在使用的代码示例(nodejs)

const create = await connection.post('/users.json', {
				name: `${req.body.first_name} ${req.body.last_name}`,
				email: req.body.email,
				password: test_password,
				username: `${req.body.first_name}_${req.body.last_name}`,
				external_ids: JSON.stringify({ 'magento': req.body.user_id }),

我是否必须先定义什么,或者您能看到什么错误吗?

您是否正确设置了身份验证器?我相信相关代码是以下内容:

我已经设置好了 SSO,并且能够从第三方网站重定向到 discourse,但我除了在定义 discourse connect provider secrets 时,不记得还有其他地方可以定义提供商。我是否遗漏了什么?

嗯,好的。如果您正在使用 DiscourseConnect,从代码来看,您似乎无法在创建时添加外部 ID。上面的代码仅处理关联帐户,这与 SSO 不同。

您可以尝试进行两次调用:第一次调用与您现在的调用相同,但省略外部 ID,然后进行第二次调用 updateUser,其中包含外部 ID 信息?希望这样能行。

1 个赞

感谢您的帮助,是的,我正在使用 DiscourseConnect,这可能就是它不起作用的原因。我认为我最终将不得不采取这种方法。要么就是我必须进行第二次调用,让 SSO 使用外部 ID 登录用户,以便将其链接到他们的电子邮件。
编辑:我认为 updateUser 也会遇到同样的问题,因为我没有定义提供程序,所以 SSO 登录可能是我的最佳选择。

为了更新并结束此事,唯一有效的解决方案是在创建新用户后运行 sso_sync,但即使那样也不是很有必要,因为一旦用户尝试通过 SSO 登录 discourse,似乎就会通过电子邮件进行同步。
感谢所有提供帮助的人。

2 个赞

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