명시적 사용자 ID를 사용하여 API로 사용자 생성

안녕하세요, 저는 Discourse API와 OAuth2 플러그인을 사용하여 자체 SSO 서비스의 사용자를 개인용 Discourse 설치 환경으로 마이그레이션하고 로그인 처리하고 있습니다. 지금까지 프로그래밍 방식으로 모든 SSO 사용자를 Discourse로 성공적으로 마이그레이션했습니다. 프로그래밍 방식으로 마이그레이션할 때 새 사용자는 자동 증가하는 Discourse 고유 ID와 함께 생성됩니다. 제 질문은 다음과 같습니다: API를 사용하여 특정 사용자에게 명시적인 ID를 지정하여 사용자를 생성할 수 있나요? 즉, 사용자에게 id:22를 지정하면 /admin/users/22.json으로 해당 사용자를 조회할 수 있다는 뜻입니다.

POST 본문에 'id’와 ‘external_id’ 매개변수를 전달해 보았지만 작동하지 않았습니다.

수정: 또한, API를 통해 특정 사용자 ID가 주어졌을 때 해당 사용자의 사용자 이름을 변경할 수 있는 방법이 있을까요?

감사합니다

ID를 할당할 수 없습니다.

외부 ID 라우트가 있습니다:

    get "#{root_path}/by-external/:external_id" => "users#show", constraints: { external_id: /[^\/]+/ }

사이트 설정에서 sso_overrides_username을 활성화하면(이것이 실제로 존재하는 것 같습니다), API를 통해 사용자 이름을 변경할 필요가 없습니다.

감사합니다. 하지만 사용자가 생성될 때 external_id를 가지고 있지 않습니다. 사용자는 프로그래밍 방식으로 생성되며, 외부 SSO와의 연동은 사용자가 Discourse에 로그인할 때까지 이루어지지 않습니다. 사용자 마이그레이션 중에 external_id와 사용자를 프로그래밍 방식으로 연결할 수 있는 방법이 없다면, external_id를 사용할 수 없다고 생각합니다.

이미 Discourse에 해당 사용자와 연결할 데이터가 있나요? 왜 사용자를 새로 만들어야 하나요?

기존 사용자들을 SSO에서 Discourse로 대량으로 마이그레이션해야 합니다. 이 사용자들은 Discourse에 직접 로그인하지 않을 수 있지만, 예를 들어 메시지를 보내거나 Discourse API를 통해 알림을 가져오는 등의 작업이 가능해야 합니다. 따라서 사용자를 프로그래매틱하게 사전에 생성해야 합니다. 또한, 사용자는 SSO에서 사용자 이름을 변경할 수 있으므로, 주어진 ID를 기반으로 Discourse에서도 해당 사용자의 사용자 이름을 업데이트할 수 있어야 합니다.

제가 새 주제를 만든 건지, 아니면 다른 게시글이 어떻게 삭제된 건지 모르겠네요.

SSO가 계정을 가지고 있고, 사용자 기록을 생성하는 데 사용할 수 있는 외부 ID를 알고 있을 것 같습니다. 그리고 나중에 그 ID를 사용하면 되겠죠. 하지만 만약 그것이 불가능하다면, 이메일 주소로 사용자를 찾아볼 수 있습니다. 가짜 이메일 주소를 두 번째로 생성할 수도 있습니다(만약 실제 이메일 주소를 변경하면 어떻게 될까요?). 그리고 나서 그 주소를 식별자로 사용하도록 어떻게든 숨겨두는 것도 방법입니다.