Hola
Me pregunto si algo que estoy intentando hacer sería posible.
Estoy queriendo asociar cuentas de Minecraft con cuentas de Discourse, de forma similar a como puedes añadir Discord, Google, etc., pero Minecraft no tiene un sistema OAuth actualmente (quizás una vez que todos migren a una cuenta de Microsoft, pero eso sería esperar un poco). Así que, el sistema que propongo es que el usuario introduzca un código generado aleatoriamente que obtendría dentro del juego. ¿Habría alguna forma de añadir esto a su cuenta como cualquier otra cuenta conectada? Probablemente lo estructuraría de forma similar a como funciona https://mc-oauth.net/, pero en lugar de iniciar sesión, usarían un comando en el chat.
Si esto fuera posible, ¿tienes alguna indicación sobre cómo podría lograrlo? Básicamente, solo necesitaría una ventana emergente que pida el código → valide el código → obtenga el UUID y lo almacene como identificador de cuenta externa.
EDIT: De hecho, parece que con la transición a cuentas de Microsoft podría modificar el plugin existente de cuentas de Microsoft para almacenar UUIDs de Minecraft. Tendré que verlo.
¿Quizás podrías usar campos de usuario personalizados para esto? Creating and configuring custom user fields
Un campo de usuario podría configurarse para que sea obligatorio al registrarse, lo que aceptaría el código generado aleatoriamente. Los campos de usuario también se pueden editar en las preferencias de alguien después del registro, si las cuentas existentes necesitan agregar el código.
2 Me gusta
Oooooh, en realidad no había pensado en esto. Gracias por la idea. La razón principal por la que buscaba un enfoque OAuth es que puedo recuperar al usuario por el ID externo. Voy a ver si puedo recuperar un usuario por un campo de usuario.
EDITAR: Ok, en realidad podría tener una forma de hacer esto usando los campos personalizados. Probablemente solo tendré que usar una base de datos externa y crear mi propia forma de solicitar un usuario de Discourse a partir de su UUID de Minecraft. Simplemente no sé lo suficiente sobre las limitaciones de Discourse para saber si habría una mejor manera.
EDITAR 2: Hmm, no veo una forma de editar campos de usuario personalizados a través de la API. Idealmente, quería que solo se estableciera a través de la API, para garantizar que posean la cuenta. Es posible que solo necesite crear una base de datos externa y hacer la vinculación de cuentas a través de otra cosa.
1 me gusta
Parece que lo que quieres hacer es implementar tu propio proveedor de oauth.
Muy parecido al diagrama aquí:
Parece que tu mecanismo personalizado ocuparía el lugar del “Directorio oAuth2”.
(Podría ser más simple usar DiscourseConnect)
Por supuesto, todo esto depende de cómo estés implementando ya la autenticación para el sitio…
Por otro lado, hacer eso podría ser complicar demasiado las cosas: admitimos campos personalizados solo para personal que podrían ser adecuados aquí.
2 Me gusta
Sí, supongo que mi única pregunta principal es si fuera solo para el personal, ¿habría alguna forma de establecer esos campos a través de alguna ruta de API? No pude encontrar una manera de hacerlo automáticamente.
No veo ninguna entrada en docs.discourse.org para esto. Todos los cambios realizados por el navegador web se realizan utilizando la misma API, por lo que mi consejo sería realizar ingeniería inversa de lo que se necesita.
1 me gusta
¡Oh, eso es muy útil, gracias por compartir! Así que, he estado pensando e investigando más sobre cómo podría hacer esto, y estoy pensando en usar el parámetro state con OAuth para que la gente inicie sesión en su cuenta de Discourse y luego use ese estado para asociar el UUID en Minecraft. El estado sería simplemente algún valor generado aleatoriamente que existiría en una base de datos con el UUID de Minecraft. Creo que este enfoque debería funcionar. ¡Gracias a todos por las ideas y los recursos!
1 me gusta
Dado que no necesitaba acceso a la UUID de Minecraft desde Discourse, terminé creando un sistema externo que se integra con Discourse SSO. Agradezco la ayuda y, si desea ver lo que se me ocurrió, lo compartí aquí. Algún día podría volver a visitar esto una vez que las cuentas de Microsoft sean obligatorias para todos los usuarios de Minecraft, ya que definitivamente habría una manera de usar sus API para lograr la misma función.
1 me gusta