外部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を取得しようとしているようです。コードを見ると、CurrentUserSerializerからassociated_account_idsが返されるようにするために有効にする必要がある非表示のサイト設定があります。

include_associated_account_ids設定は非表示になっています: discourse/config/site_settings.yml at main · discourse/discourse · GitHub

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.