Al llamar a user-api-key/new con un client_id que ya está en uso por otro usuario, el foro lanzará un error RecordNotUnique y fallará silenciosamente con un error interno del servidor.
Esto podría querer fallar con algo menos silencioso, informando al usuario que ya existe una clave de API con ese ID de cliente.
Aunque eso me lleva a la segunda pregunta, ¿se supone que las claves de API de usuario deben comportarse así? ¿Se supone que el ID de cliente debe ser único entre todos los usuarios?
Gracias por informar de esto. Sin embargo, tengo un par de preguntas para poder investigar.
¿Puede proporcionar un ejemplo básico para poder depurar esto localmente? ¿Cuál es su caso de uso para las claves de API de usuario? ¿Está utilizando la aplicación móvil de Discourse Hub o algo más?
La primera y repetida autorización tendrá éxito como el primer usuario, al usarla nuevamente para otro usuario sin cambiar el client_id fallará.
Las claves de API de usuario se utilizan para permitir que el usuario utilice su cuenta del foro en el cliente del juego, de modo que puedan publicar desde el juego. También tenemos muchos usuarios que las utilizan para autenticar sus cuentas del foro en sus propios sitios web.
Mientras que el client_id debe ser único para los clientes del juego, por lo que cada cliente se lista como un cliente separado en la pantalla de aplicaciones. Para el caso de uso del sitio web, querrás tener un client_id para que no cada inicio de sesión se liste por separado.
¿Cómo debería implementarse eso para casos de uso en los que un sitio web no tiene su propio sistema de autenticación para usuarios y no debería crear múltiples aplicaciones de API de usuario?
Si la aplicación que autentica a los usuarios debe usarse en varias computadoras y no tiene ningún dato de usuario previo a la autenticación, eso es imposible.
No entiendo cómo esto se relaciona con el OP, ya que describe un caso en el que un ID de cliente es compartido por varios usuarios, mientras que tu caso parece describir un escenario en el que un usuario tiene varios IDs de cliente.
Se llama ID de cliente y no ID de usuario porque un usuario puede tener varios clientes.
En la mayoría de los estándares como OAuth, el ID de cliente se describe como “identificador de aplicación” y se puede usar para todos los usuarios (no solo para uno), por ejemplo, los inicios de sesión sociales de tu foro siempre usan el mismo ID de cliente.
Sin embargo, dado que las claves API de usuario parecen estar diseñadas principalmente para clientes como las aplicaciones de Discourse, es posible que se hayan diseñado para ser únicas, sería bueno saber si lo son.
Responder a lo anterior dejaría claro si falta una verificación en user_api_keys.rb o si hay un índice incorrecto en la base de datos. Porque actualmente esas solicitudes arrojan un aterrador error 500 y aparecen en nuestro punto final /logs.