Здравствуйте! Я использую Discourse API и плагин OAuth2 для миграции и входа пользователей из моего собственного сервиса SSO в приватную установку Discourse. На данный момент мне удалось программно успешно перенести всех пользователей SSO в Discourse. При программной миграции новые пользователи создаются с автоинкрементируемым идентификатором, специфичным для Discourse. Мой вопрос: можно ли использовать API для создания пользователя с явным указанием его ID? То есть, если я назначу пользователю id:22, смогу ли я запросить его через /admin/users/22.json?
Я пробовал передавать параметры ‘id’ и ‘external_id’ в теле POST-запроса, но это не сработало.
Редактирование: также есть ли способ через API, зная конкретный ID пользователя, изменить его имя пользователя?
Спасибо, но у меня нет external_id при создании пользователя. Пользователь создается программно, а связь с внешним SSO установится только после входа пользователя в Discourse. Если нет способа программно связать пользователя с этим external_id во время миграции, я не думаю, что external_id можно использовать.
Мне нужно мигрировать множество существующих пользователей из моей SSO в Discourse. Эти пользователи могут никогда не входить в Discourse напрямую, но должна быть возможность, например, отправлять им сообщения или получать их уведомления через API Discourse. Именно поэтому их необходимо проактивно создавать программно. Кроме того, пользователи могут изменять своё имя пользователя в SSO, поэтому, зная идентификатор, я должен иметь возможность обновлять имя пользователя в Discourse.
Я создал новую тему, или что-то другое было удалено каким-то образом?
Кажется, что SSO должен иметь учётную запись и знать внешний идентификатор, который можно использовать для создания записи пользователя, а затем применять её в будущем. Но если это невозможно, можно попробовать найти пользователя по адресу электронной почты — даже создать второй, фиктивный адрес электронной почты (ведь что, если они изменят свой реальный адрес?), а затем, возможно, как-то скрыть его, чтобы использовать в качестве идентификатора в дальнейшем.