Как получить внешний ID

Когда я напрямую обращаюсь к API, я без проблем получаю внешний идентификатор аутентификации пользователя:

GET /admin/users/{id}.json

Однако при использовании JavaScript API я не могу получить те же данные для текущего пользователя. Фактически, объект currentUser не возвращает никаких данных о внешних идентификаторах:

import { apiInitializer } from "discourse/lib/api";

export default apiInitializer("1.5.0", api => {
  const currentUser = api.getCurrentUser();
  if (currentUser) {
    const userOAuthID = currentUser?.external_ids?.oauth2_basic;
    console.log("userOAuthID:", userOAuthID); // null
  }
});

Как можно получить внешний идентификатор currentUser через JavaScript?

Контекст

Я пытаюсь передать внешний идентификатор текущего пользователя в window.dataLayer.

Похоже, вы пытаетесь получить user_associated_account.provider_uid пользователя. Судя по коду, есть скрытая настройка сайта, которую нужно включить, чтобы associated_account_ids возвращались из CurrentUserSerializer:

Настройка include_associated_account_ids скрыта: discourse/config/site_settings.yml at main · discourse/discourse · GitHub. Чтобы включить её, откройте консоль Rails вашего сайта и выполните:

SiteSetting.include_associated_account_ids=true

Спасибо, @simon.
Однако, похоже, что на размещённом экземпляре я не могу включить её самостоятельно. В разделе /admin/site_settings я не нахожу соответствующей опции.

Скорее всего, проблема решена! : )

Если ваш сайт размещен командой Discourse, обратитесь в их службу поддержки. Они должны быть в состоянии настроить это для вас.