외부 ID 가져오는 방법

API를 직접 호출하면 사용자의 외부 인증 ID에 아무 문제 없이 접근할 수 있습니다:

GET /admin/users/{id}.json

하지만 JavaScript API를 사용하려고 하면 현재 사용자의 동일한 데이터를 가져올 수 없습니다. 실제로 currentUser는 외부 ID에 대해 데이터를 반환하지 않습니다:

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
  }
});

JavaScript를 통해 currentUser의 외부 ID에 접근하는 방법은 무엇인가요?

배경

현재 사용자의 외부 ID를 window.dataLayer에 푸시(push)하려고 하고 있습니다.

사용자의 user_associated_account.provider_uid를 가져오려고 하고 있는 것 같습니다. 코드를 살펴본 결과, CurrentUserSerializer에서 associated_account_ids가 반환되도록 하려면 활성화해야 하는 숨겨진 사이트 설정이 있습니다:

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에 의해 호스팅되고 있다면, 그들의 지원팀에 문의하세요. 대신 설정해 줄 수 있을 것입니다.