Error en la API: el "." final en el nombre de usuario causa un error

Estamos usando la API para integrar Discourse en nuestro sitio (a través de pydiscourse).

Cuando llega el momento de agregar un usuario a un grupo de Discourse a través de la API, pydiscourse utiliza el método PUT a la URL de la API de Discourse:

/admin/groups/{group_id}/members.json

…y pasa el nombre de usuario a través de la variable ‘usernames’.

Si el nombre de usuario contiene un “.” en él, no hay problema, a menos que ese “.” aparezca como el último carácter, en cuyo caso la API devolverá un error con el mensaje:

Proporcionaste parámetros inválidos en la solicitud: usernames
1 me gusta

Un nombre de usuario no puede terminar en un punto, por lo que esta es la respuesta esperada. Iba a comprobar la fuente, pero puedes intentar crear una cuenta aquí con un punto al final y es ilegal.

4 Me gusta

Gracias por la rápida respuesta, Jay. ¿Sabes de inmediato si el correo electrónico del usuario se puede enviar para ‘nombre de usuario’ en ese endpoint de la API, de modo que Discourse sepa buscar al usuario por correo electrónico? (Usamos SSO para conectar nuestra aplicación Django con Discourse, por lo que Discourse debería tener ambos identificadores para cada usuario)

1 me gusta

¡Oh! Sí, lo sé. El otro día me di cuenta de que puedes usar la dirección de correo electrónico para el punto final que agrega un usuario a un grupo. Sin embargo, podría haber sido la ruta no administrativa. Simplemente incluye el correo electrónico como nombre de campo con la dirección.

Sin embargo, si estás utilizando Discourse connect, puedes tener los grupos administrados al iniciar sesión, que es probablemente lo que quieres hacer en lugar de preocuparte por la API.

1 me gusta

Gracias por el seguimiento.

Usamos Discourse Connect, pero también usamos la API.

Por cierto, mencionaste Podría haber sido la ruta no administrativa, sin embargo

Entonces, esa solicitud PUT sería:

/groups/{group_id}/members.json

…con 'email': (correo electrónico del usuario) como carga útil… ¿y Discourse simplemente sabe que mi usuario tiene derechos de administrador para poder agregar a ese usuario a ese grupo?

(…lo siento, no tengo claro por qué hay dos rutas para la misma operación…)

Creo que sí. Usé Cómo hacer ingeniería inversa de la API de Discourse para averiguar la ruta. Y luego, supongo, miré el código fuente para ver que el ID de usuario y la dirección de correo electrónico también funcionan.

Sí, el SSO solo actualiza los grupos al iniciar sesión, por lo que la API es tu solución.