Create User의 external_ids 매개변수

외부 사이트(3자)에서 기존 사용자를 모두 가져오는 함수를 작성하고 있습니다. 저는 미들웨어만 개발하고 있습니다. createUser 함수를 사용하려고 합니다. external_ids 파라미터를 제외하고는 잘 작동합니다. external_ids에 무엇을 보내든(배열, 객체 등 시도해 봤습니다) 사용자는 생성되지만 외부 ID는 저장되지 않습니다. 오류도 없습니다.

external_ids 객체에 특정 형식이 필요한가요?

sso_sync 솔루션을 봤지만, API에 external_ids 파라미터가 포함되어 있으므로 그 방향으로 가고 싶지 않습니다.

팁이 있으신 분 계신가요? 미리 감사합니다.

안녕하세요, 오신 것을 환영합니다 :wave:

이 질문에 대해 구체적으로 답변드리자면, 기대하는 형식은 다음과 같은 것 같습니다:

{ <provider_name>: <unique_id> }

답변과 환영의 말씀을 전해주셔서 감사합니다!

보내주신 형식을 시도해 보았지만 요청은 통과되었는데, 여전히 외부 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는 이미 설정했으며, 제3자 사이트에서 Discourse로 리다이렉트하는 데 성공했습니다. 하지만 discourse connect provider secrets를 정의할 때를 제외하고는 프로바이더를 정의할 장소를 기억나지 않습니다. 제가 놓치고 있는 부분이 있을까요?

음, 알겠습니다. DiscourseConnect를 사용 중이라면, 코드를 읽어본 결과 생성 시 외부 ID를 추가할 수 없는 것 같습니다. 바로 위 코드는 SSO와 다른 관련 계정만 처리하고 있습니다.

두 번의 호출을 시도해 볼 수 있을까요? 첫 번째 호출은 현재와 동일하게 하되 외부 ID를 빼고, 두 번째 호출로는 updateUser를 호출하여 외부 ID 정보를 포함하는 방식입니다. 이 방법으로 작동하기를 바랍니다.

도와주셔서 감사합니다. 네, 저는 DiscourseConnect를 사용 중인데, 아마도 그것이 작동하지 않는 이유일 것입니다. 결국 이 접근 방식을 사용해야 할 것 같습니다. 아니면 외부 ID로 사용자를 SSO 로그인시켜 이메일과 연결하는 두 번째 호출을 해야 할 수도 있습니다.
수정: 정의된 제공자가 없으므로 updateUser도 동일한 문제가 있을 것 같고, 아마도 SSO 로그인이 가장 좋은 선택지일 것입니다.

결론을 내고 이 이슈를 닫기 위해 업데이트를 남깁니다. 실제로 작동한 유일한 해결책은 새 사용자를 생성한 후 sso_sync를 실행하는 것이었습니다. 다만, 이는 그렇게까지 필수적이지도 않았는데, 사용자가 Discourse에 SSO로 로그인하려고 하면 이메일을 통해 동기화가 자동으로 이루어지는 것 같기 때문입니다.
도움을 주신 모든 분들께 감사드립니다.