如何获取外部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

看起来您正尝试获取用户的 user_associated_account.provider_uid。从代码来看,有一个隐藏的站点设置需要启用,才能使 associated_account_idsCurrentUserSerializer 返回:

include_associated_account_ids 设置是隐藏的:discourse/config/site_settings.yml at main · discourse/discourse · GitHub Rails 控制台并运行:

SiteSetting.include_associated_account_ids=true

3 个赞

谢谢 @simon
不过,似乎我无法在托管实例上自行启用它。我在 /admin/site_settings 中找不到任何选项。

可能已解决! : )

如果您的站点由 Discourse 托管,请联系他们的支持团队。他们应该能够为您进行设置。

4 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.