Tenemos una aplicación de foro Discourse conectada a nuestra aplicación mediante SSO. Las avatares de los usuarios se actualizan directamente a través de ella. Sin embargo, nuestras fotos están moderadas, por lo que necesitamos borrar los avatares de los usuarios en el lado de la aplicación de Discourse.
¿Se puede hacer de alguna manera mediante la API REST o mediante mejoras en el mecanismo de SSO? No he encontrado esta información en la documentación.
Deberías poder llamar a la ruta sync_sso para volver a sincronizar el avatar del usuario, pero también puedes hacer una solicitud PUT a http://localhost:3000/u/<username>/preferences/avatar/pick con un upload_id vacío
Aquí tienes un código en Ruby que puedes usar y que utiliza el gem discourse_api para que te sirva de referencia. El endpoint sync_sso es un poco diferente de otros endpoints porque necesitas enviarle una carga firmada.
¿Entiendo bien que podemos enviar POST /admin/users/sync_sso?api_key=...&api_username=...&sso=...&sig=...?
¿Los parámetros ‘sso’ y ‘sig’ son similares a los del flujo de autorización SSO?
Intenté realizar la solicitud como se explicó anteriormente POST /admin/users/sync_sso?api_key=...&api_username=...&sso=...&sig=... y respondió con 200 y mi usuario, pero la imagen de perfil del usuario no se actualizó y no se registraron eventos en el log. ¿Qué estoy haciendo mal?
Debes incluir api_key y api_username en el encabezado HTTP, ya que usarlos en los parámetros de la consulta está obsoleto.
Creo que debe haber alguna protección en el código que evite eliminar accidentalmente un avatar si el campo se omite o está vacío. Es muy probable que necesites proporcionar una URL a un avatar predeterminado para reemplazar el avatar existente.
Reemplacé las credenciales de la API por encabezados. La sincronización de SSO no actualizó el avatar del usuario con el proporcionado. Aunque el trabajo de Sidekiq en esa llamada se completó y no hubo registros de errores ni advertencias.