Hallo Ich frage mich, ob etwas, das ich zu tun versuche, überhaupt möglich wäre.
Ich möchte Minecraft-Konten mit Discourse-Konten verknüpfen, ähnlich wie man Discord, Google usw. hinzufügen kann, aber Minecraft hat derzeit kein OAuth-System (vielleicht, sobald alle zu einem Microsoft-Konto migriert sind, aber das wäre einiges an Wartezeit). Das System, das ich vorschlage, ist, dass der Benutzer einen zufällig generierten Code eingibt, den er im Spiel erhält. Gäbe es eine Möglichkeit, dies wie jedes andere verbundene Konto zu seinem Konto hinzuzufügen? Ich würde es wahrscheinlich ähnlich strukturieren, wie https://mc-oauth.net/ funktioniert, aber anstatt sich anzumelden, würden sie einen Befehl im Chat verwenden.
Wenn dies möglich wäre, haben Sie dann einige Hinweise, wie ich das erreichen könnte? Ich bräuchte so ziemlich nur ein modales Popup, das nach dem Code fragt → Code validieren → UUID abrufen und als externe Kontenkennung speichern.
EDIT: Tatsächlich scheint es, dass ich mit der Umstellung auf Microsoft-Konten das bestehende Microsoft-Konto-Plugin möglicherweise ändern kann, um Minecraft-UUIDs zu speichern. Das muss ich noch sehen.
Ein Benutzerfeld könnte so eingestellt werden, dass es bei der Anmeldung erforderlich ist und den zufällig generierten Code akzeptiert. Benutzerfelder können auch in den Einstellungen eines Benutzers nach der Anmeldung bearbeitet werden, falls bestehende Konten den Code hinzufügen müssen.
Oooooh, darüber habe ich tatsächlich nicht nachgedacht. Danke für die Idee – der Hauptgrund, warum ich nach einem OAuth-Ansatz gesucht habe, ist, dass ich den Benutzer anhand der externen ID abrufen kann. Ich werde sehen, ob ich möglicherweise einen Benutzer anhand eines Benutzerfeldes abrufen kann.
EDIT: Okay, ich habe tatsächlich einen Weg gefunden, dies mithilfe der benutzerdefinierten Felder zu tun. Ich werde wahrscheinlich eine externe Datenbank verwenden und meinen eigenen Weg entwickeln, um einen Discourse-Benutzer anhand seiner Minecraft-UUID anzufordern. Ich weiß einfach nicht genug über die Einschränkungen von Discourse, um zu wissen, ob es einen besseren Weg gäbe.
EDIT 2: Hmm, ich sehe keine Möglichkeit, benutzerdefinierte Benutzerfelder über die API zu bearbeiten. Idealerweise wollte ich, dass sie nur über die API festgelegt werden, damit garantiert ist, dass sie das Konto besitzen. Ich muss wahrscheinlich eine externe Datenbank erstellen und die Kontoverknüpfung über etwas anderes vornehmen.
Natürlich hängt all dies davon ab, wie Sie die Authentifizierung für die Website bereits implementieren …
Andererseits könnte dies die Dinge übermäßig komplizieren – wir unterstützen benutzerdefinierte Felder nur für Mitarbeiter, die hierfür geeignet sein könnten.
Ja, ich schätze, meine einzige Hauptfrage ist, ob es eine Möglichkeit gäbe, diese Felder über eine API-Route festzulegen, wenn es sich um reine Mitarbeiter handelt? Ich konnte keine Möglichkeit finden, dies automatisch zu tun.
Oh, das ist wirklich nützlich – danke fürs Teilen! Ich habe also weiter darüber nachgedacht und recherchiert, wie ich das machen könnte. Ich denke daran, den state-Parameter mit OAuth zu verwenden, damit sich Leute bei ihrem Discourse-Konto anmelden können, und dann diesen Zustand zu verwenden, um die UUID in Minecraft zuzuordnen. Der Zustand wäre einfach ein zufällig generierter Wert, der in einer Datenbank mit der Minecraft-UUID existieren würde. Ich denke, dieser Ansatz sollte funktionieren. Vielen Dank an alle für die Ideen und Ressourcen!
Da ich keinen Zugriff auf die Minecraft-UUID innerhalb von Discourse selbst benötigte, habe ich schließlich ein externes System entwickelt, das sich in Discourse SSO integriert. Ich schätze die Hilfe, und wenn Sie sehen möchten, was ich mir ausgedacht habe, habe ich es hier geteilt. Eines Tages werde ich das vielleicht noch einmal überdenken, sobald Microsoft-Konten für alle Minecraft-Benutzer obligatorisch sind, da es definitiv einen Weg geben würde, ihre APIs zu nutzen, um dieselbe Funktion zu erreichen.