Hola a todos. Estoy usando SSO en mi foro y los avatares son controlados por mi sitio web.
Hasta hace unos días, la carga/actualización de avatares desde el sitio web a Discourse, a través de la API, funcionaba. Ahora obtengo un error 422 - Unprocessable Entity.
He intentado depurar el problema, he hecho algunas pruebas con Postman y tengo los mismos problemas. La solicitud que estoy haciendo está a continuación (con la URL, el nombre de usuario y la api_key eliminados, por supuesto).
¿Alguno de ustedes sabe si hay algún problema con esta parte de Discourse?
Creo que eso interferiría con la carga real, no con la asignación del avatar al usuario.
Puedo cargar el archivo sin ningún problema. Cuando hago la llamada a la API para indicar qué archivo usar como avatar, ahí es donde obtengo el error y eso comenzó de la nada.
Estoy probando mi suerte y le daré un último impulso. Es extraño que nadie lo haya encontrado. Estoy seguro de que no es un problema de codificación, ya que ha estado funcionando durante más de un par de años.
Anula el avatar del usuario con el valor de la carga útil de DiscourseConnect. Si está habilitado, no se permitirá a los usuarios subir avatares en Discourse.
En mi entorno local, con esa opción desmarcada, obtengo una respuesta http 200 al actualizar el avatar a través de la API:
Todavía no tengo una respuesta, pero solo quería informarte que esto está en mi lista para investigarlo. Tengo una configuración de SSO que puedo probar localmente, para que nuestra configuración coincida. Parece que deberíamos respetar esa configuración del sitio, lo que podría ser un cambio que alguien hizo recientemente, pero tal vez podríamos agregar una anulación de API.
Yo también lo pensé, pero no funcionó. Además, este problema apareció de la nada. Nadie cambió nada (soy el único administrador, así que no hay posibilidad de que alguien haya cambiado alguna configuración), ningún cambio de código en el sitio web principal, nada.
¿Puede informarme qué tiene configurado para allow_uploaded_avatars? Ya no es solo una configuración de verdadero/falso, sino que se establece en un cierto nivel de confianza. Y ¿puede informarme cuál es el nivel de confianza del usuario que intenta cambiar su avatar? ¿Y está en la última versión de Discourse?
Aquí está el código para elegir un avatar y las líneas que devuelven respuestas 422.
No es que no pueda ser algo más profundo en la base de código, pero probablemente sea uno de estos 3. El primero tiene que ver con discourse_connect_overrides_avatar y aparentemente lo descartamos. No creo que sea el segundo porque su comando curl parece correcto e incluye el tipo “uploaded”. Posiblemente todavía podría ser el tercero con la configuración allow_uploaded_avatars, que es por lo que me gustaría saber qué tiene configurado.
Lo tenía deshabilitado hasta que comenzó este problema. Luego lo cambié a 0:usuario nuevo.
Pero tenerlo deshabilitado siempre me funcionó. No quiero que los usuarios suban desde el foro, sino desde el sitio web que utiliza SSO. Aun así, cambiarlo a 0:usuario nuevo no cambia nada. Todavía obtengo el mismo error
No puedo encontrar ninguna actualización reciente que haya impedido que los avatares funcionen a través de la API cuando todas las configuraciones del sitio los bloquean. De todos modos, si está utilizando SSO (o DiscourseConnect), debería utilizar la ruta de la API /admin/users/sync_sso para actualizar el avatar de los usuarios, no la ruta de la interfaz de usuario (/u/username/preferences/avatar/pick).
Y pase estos parámetros en el cuerpo de la solicitud:
Hola Blake. Muchas gracias por tu continua ayuda en este asunto.
No encuentro información sobre ese endpoint en la documentación de la API. ¿Es algo nuevo?
Además, como indiqué antes, la actualización del avatar funcionó bien durante varios meses utilizando el endpoint /u/username/preferences/avatar/pick, lo cual es muy extraño. Simplemente dejó de funcionar. Eso realmente me desconcierta.