Программное создание пользователя с OAuth2 ID

Существует ли способ вставить строку в таблицу user_associated_account через REST API?

Для контекста: мне нужно иметь возможность создавать пользователей на нашем экземпляре Discourse и связывать их с нашим провайдером OAuth2.
Когда пользователи входят через интерфейс Discourse (через плагин OAuth2 Basic), их учетная запись связывается, и я могу получить их ID пользователя Discourse по их внешнему UID с помощью GET /u/by-external/oauth2_basic/{external_uid}.
Однако, когда мы создаем пользователей через REST API (POST /users.json), я не вижу способа связать их учетную запись с соответствующей учетной записью OAuth2 (если они не войдут в Discourse вручную).

К сведению: плагин OAuth2 basic реализовал новую систему Auth::ManagedAuthenticator: https://github.com/discourse/discourse-oauth2-basic/pull/21

Что я пробовал:

  • Я изучил документацию по API, но не нашел никаких подсказок.
  • Я нашел маршрут API, который используется для получения связанных учетных записей пользователя: GET /u/{username}/emails.json. Но этот маршрут, похоже, не поддерживает метод HTTP PUT и не предоставляет поля из таблицы user_associated_accounts (provider_name, provider_uid и user_id).
  • Я также проверял настройки Discourse на наличие чего-либо, связанного с этой проблемой, но безрезультатно.
  • Я проверил meta.discourse.org, но не нашел решения.

Любая помощь будет очень ценна! Спасибо :slight_smile:

Пока вы создаете пользователя с тем же адресом электронной почты, что и OAuth, вам не о чем беспокоиться.

Спасибо за ваш отзыв!
Я бы хотел не беспокоиться об этом, но мне необходимо получать пользователя по ID моего провайдера ( GET /u/by-external/oauth2_basic/{external_uid}).
Это невозможно, пока пользователь не войдет вручную через интерфейс (я хочу этого избежать).

Я бы предложил передавать associated_accounts следующим образом при создании нового пользователя:

POST /users.json
{
  username: "something",
  email: "test@test.com",
  associated_accounts: [
    {
      provider_name: "oauth2_basic",
      provider_uid: "12345"
    }
  ]
}

Это было бы идеально!

Примечание: это аналогично параметрам provider и extern_uid в API пользователей GitLab (Users API | GitLab Docs)