Wie man externe ID erhält

Wenn ich die API direkt aufrufe, kann ich problemlos auf die externe Authentifizierungs-ID eines Benutzers zugreifen:

GET /admin/users/{id}.json

Wenn ich jedoch die Javascript-API verwende, kann ich nicht dieselben Daten für den aktuellen Benutzer abrufen. Tatsächlich gibt currentUser keine Daten für externe IDs zurück:

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

Wie kann ich über Javascript auf die externe ID von currentUser zugreifen?

Der Kontext

Ich versuche, die externe ID des aktuellen Benutzers an window.dataLayer zu übergeben.

Es sieht so aus, als ob Sie versuchen, die user_associated_account.provider_uid des Benutzers abzurufen. Wenn ich mir den Code ansehe, gibt es eine versteckte Site-Einstellung, die Sie aktivieren müssen, damit associated_account_ids vom CurrentUserSerializer zurückgegeben werden:

Die Einstellung include_associated_account_ids ist versteckt: discourse/config/site_settings.yml at main · discourse/discourse · GitHub. Um sie zu aktivieren, geben Sie Ihre Site’s Rails-Konsole ein und führen Sie aus:

SiteSetting.include_associated_account_ids=true

3 „Gefällt mir“

Danke, @simon.
Allerdings scheint es, dass ich es auf einer gehosteten Instanz nicht selbst aktivieren kann. Ich finde keine Option unter /admin/site_settings.

Wahrscheinlich gelöst! : )

Wenn Ihre Website von Discourse gehostet wird, wenden Sie sich an deren Support-Team. Sie sollten es für Sie einrichten können.

4 „Gefällt mir“

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