Olá Estou me perguntando se algo que estou tentando fazer seria possível.
Então, eu quero associar contas do Minecraft com Contas do Discourse, muito parecido com o que você pode adicionar Discord, Google, etc., mas o Minecraft não tem um sistema OAuth atualmente (talvez uma vez que todos sejam migrados para uma conta Microsoft, mas isso seria um pouco de espera). Então, o sistema que estou propondo é ter o usuário inserir um código gerado aleatoriamente que eles obteriam no jogo. Haveria uma maneira de adicionar isso à conta deles como qualquer outra conta conectada? Eu provavelmente estruturaria de forma semelhante a como https://mc-oauth.net/ funciona, mas em vez de fazer login, eles usariam um comando no chat.
Se isso fosse possível, você teria alguma dica de como eu poderia conseguir isso? Eu basicamente só precisaria de um pop-up modal pedindo o código → validar o código → obter o UUID e armazenar como identificador de conta externa.
EDIT: Na verdade, parece que com a transição para contas Microsoft, eu poderia ser capaz de modificar o plugin existente da conta Microsoft para armazenar UUIDs do Minecraft. Terei que ver.
Você poderia talvez usar campos de usuário personalizados para isso? Creating and configuring custom user fields
Um campo de usuário poderia ser definido como obrigatório no cadastro, o que aceitaria o código gerado aleatoriamente. Campos de usuário também podem ser editáveis nas preferências de alguém após o cadastro, caso contas existentes precisem adicionar o código.
Oooooh, na verdade, eu não tinha pensado nisso. Obrigado pela ideia - a principal razão pela qual eu estava procurando uma abordagem OAuth é que posso recuperar o usuário pelo ID externo. Vou ver se consigo recuperar um usuário por um campo de usuário.
EDIT: Ok, na verdade, posso ter uma maneira de fazer isso usando os campos personalizados. Provavelmente terei que usar um banco de dados externo e criar minha própria maneira de solicitar um usuário do Discourse a partir de seu UUID do Minecraft. Eu simplesmente não sei o suficiente sobre as limitações do Discourse para saber se haveria uma maneira melhor.
EDIT 2: Hmm, não vejo uma maneira de editar campos de usuário personalizados via API. Idealmente, eu queria que fosse definido apenas pela API, para que seja garantido que eles possuam a conta. Talvez eu precise apenas criar um banco de dados externo e fazer a vinculação de contas por meio de outra coisa.
Sim, acho que minha única dúvida principal é se fosse apenas para funcionários, haveria uma maneira de definir esses campos por meio de alguma rota de API? Não encontrei uma maneira de fazer isso automaticamente.
Ah, isso é muito útil - obrigado por compartilhar! Então, pensei mais e pesquisei sobre como eu poderia fazer isso, o que estou pensando é usar o parâmetro state com OAuth para fazer as pessoas entrarem em suas contas do Discourse e, em seguida, usar esse estado para associar o UUID no Minecraft. O estado seria apenas um valor gerado aleatoriamente que existiria em um banco de dados com o UUID do Minecraft. Acho que essa abordagem deve funcionar. Obrigado a todos pelas ideias e recursos!
Como eu não precisava de acesso ao UUID do Minecraft dentro do próprio Discourse, acabei criando um sistema externo que se integra ao Discourse SSO. Agradeço a ajuda e, se quiser ver o que eu criei, compartilhei aqui. Um dia, talvez eu revisite isso quando as contas da Microsoft forem obrigatórias para todos os usuários do Minecraft, pois certamente haveria uma maneira de usar as APIs deles para alcançar o mesmo recurso.