Hallo, ich verwende die Discourse-API und das OAuth2-Plugin, um Benutzer von meinem eigenen SSO-Dienst zu einer privaten Discourse-Installation zu migrieren und einzuloggen. Bisher ist es mir gelungen, alle SSO-Benutzer programmgesteuert erfolgreich nach Discourse zu migrieren. Bei der programmgesteuerten Migration werden neue Benutzer mit einer automatisch inkrementierenden, Discourse-spezifischen ID erstellt. Meine Frage ist: Kann ich über die API einen Benutzer mit einer expliziten ID erstellen? Das heißt, wenn ich einem Benutzer die ID 22 zuweise, kann ich ihn/sie dann über /admin/users/22.json abfragen?
Ich habe versucht, die Parameter ‘id’ und ‘external_id’ im POST-Body zu übergeben, aber das funktioniert nicht.
Edit: Gibt es außerdem eine Möglichkeit über die API, bei einer bestimmten Benutzer-ID den Benutzernamen zu ändern?
Danke, aber ich habe die external_id nicht, wenn der Benutzer erstellt wird. Der Benutzer wird programmatisch erstellt, und die Verknüpfung mit dem externen SSO findet erst statt, wenn sich der Benutzer bei Discourse anmeldet. Es sei denn, es gibt eine Möglichkeit, den Benutzer während der Migration programmatisch mit dieser external_id zu verknüpfen, glaube ich nicht, dass external_id verwendet werden kann.
Ich muss eine Reihe bestehender Benutzer von meinem SSO nach Discourse migrieren. Diese Benutzer werden sich möglicherweise nie direkt bei Discourse anmelden, aber es sollte möglich sein, ihnen beispielsweise Nachrichten zu senden oder ihre Benachrichtigungen über die Discourse-API abzurufen. Aus diesem Grund sollten sie proaktiv programmatisch erstellt werden. Darüber hinaus können Benutzer ihren Benutzernamen im SSO ändern. Daher muss ich in der Lage sein, basierend auf einer ID auch den Benutzernamen eines Benutzers in Discourse zu aktualisieren.
Habe ich ein neues Thema erstellt oder wurden die anderen Inhalte irgendwie gelöscht?
Es scheint so, als ob das SSO das Konto hätte und eine externe ID kennen würde, die du verwenden könntest, um den Benutzerdatensatz zu erstellen und diese in Zukunft zu nutzen. Falls das jedoch auf irgendeine Weise unmöglich ist, könntest du versuchen, den Benutzer über seine E-Mail-Adresse zu finden – du könntest sogar eine zweite, gefälschte E-Mail-Adresse erstellen (was, falls sie ihre echte E-Mail-Adresse ändern?), und diese dann vielleicht so verbergen, dass du sie zukünftig als Identifikator verwenden kannst.