「偽の」OAuthプロバイダー?

こんにちは :wave: 実現可能かどうか疑問に思っています。

MinecraftアカウントをDiscourseアカウントに関連付けたいと考えています。DiscordやGoogleを追加するのと同じようにですが、Minecraftには現在OAuthシステムがありません(Microsoftアカウントへの移行が完了すれば可能になるかもしれませんが、それは少し待つことになります)。そこで提案しているシステムは、ユーザーがゲーム内で取得するランダムに生成されたコードを入力するようにすることです。これを他の接続済みアカウントと同様にアカウントに追加する方法はありますか? https://mc-oauth.net/ の仕組みに似た構造にするかもしれませんが、ログインの代わりにチャットでコマンドを使用します。

もしこれが可能であれば、どのように達成できるか何かヒントはありますか?コードを求めるモーダルポップアップが必要になるでしょう → コードを検証 → UUIDを取得して外部アカウント識別子として保存します。

編集:実際、Microsoftアカウントへの移行により、既存のMicrosoftアカウントプラグインを変更してMinecraft UUIDを保存できる可能性があります。確認する必要があります。

カスタムユーザーフィールドを使用してみてはどうでしょうか? Creating and configuring custom user fields

ユーザーフィールドをサインアップ時に必須に設定し、ランダムに生成されたコードを受け入れるようにすることができます。既存のアカウントがコードを追加する必要がある場合、サインアップ後にユーザーの環境設定でユーザーフィールドを編集することも可能です。

「いいね!」 2

おお、これは思いつきませんでした。アイデアをありがとうございます。OAuthアプローチを探していた主な理由は、外部IDでユーザーを取得できるからです。ユーザーフィールドでユーザーを取得できるかどうかを確認してみます。

編集:わかりました。カスタムフィールドを使用してこれを実現できるかもしれません。外部データベースを使用して、Minecraft UUIDからDiscourseユーザーをリクエストする独自の手段を講じる必要があるでしょう。Discourseの制限について、より良い方法があるかどうかはわかりません。

編集2:うーん、API経由でカスタムユーザーフィールドを編集する方法が見つかりません。APIによってのみ設定されるようにしたいと考えていました。これにより、アカウントを所有していることが保証されます。外部データベースを作成し、他の方法でアカウントをリンクする必要があるかもしれません。

「いいね!」 1

独自のOAuthプロバイダーを実装したいということでしょうか?

こちらののようになります。

カスタムメカニズムが「OAuth2 ディレクトリ」の代わりになるようです。

DiscourseConnect を使用する方が簡単な場合もあります)

もちろん、これらすべては、すでにサイトの認証をどのように実装しているかによります…

一方で、それは物事を複雑にしすぎている可能性があります。スタッフ専用のカスタムフィールドはサポートしており、こちらが適しているかもしれません。

「いいね!」 2

ええ、主な質問は、スタッフ専用の場合、APIルート経由でそれらのフィールドを設定する方法があるかどうかということです。自動的に行う方法が見つかりませんでした。

docs.discourse.org にこれに関するエントリは見つかりません。ウェブブラウザによって行われるすべての変更は同じAPIを使用して行われるため、私の助言は必要なものをリバースエンジニアリングすることです。

「いいね!」 1

ああ、それは本当に便利ですね。共有していただきありがとうございます!それで、これをどのように行うかについてさらに考え、調査しました。私が考えているのは、OAuthの state パラメータを使用して、人々がDiscourseアカウントにサインインできるようにし、その状態を使用してMinecraftのUUIDを関連付けることです。状態は、MinecraftのUUIDとともにデータベースに存在するランダムに生成された値になります。このアプローチは機能するはずだと思います。すべてのアイデアとリソースを共有してくれた皆さん、ありがとうございました!

「いいね!」 1

Discourse 自体から Minecraft UUID にアクセスする必要がなかったため、Discourse SSO と統合する外部システムを作成しました。ご協力に感謝します。もし私が考えたものを見てみたい場合は、こちらで共有しました。将来的には、すべての Minecraft ユーザーに Microsoft アカウントが必須になったら、これを再検討するかもしれません。その場合、それらのAPIを使用して同様の機能を実現する方法が間違いなく存在するでしょう。

「いいね!」 1