Avatar externo vía API?

Tengo un sitio en Rails para una comunidad. Estoy utilizando SSO para que los miembros de la comunidad no tengan que iniciar sesión por separado en Discourse, y estoy usando la API de Discourse para facilitar el intercambio de información entre ambos servidores. Ahora me gustaría unificar las avatares de los usuarios, es decir, usar el mismo avatar en el foro que en mi sitio principal. ¿Cómo puedo hacerlo?

Intenté lo que suelo hacer para las solicitudes de API, es decir, una solicitud POST con Faraday a https://discuss.diem25.org/uploads.json con la clave API y el nombre de usuario de la API en la cabecera, y el siguiente cuerpo:

{ 
          "type": "avatar", 
          "user_id": user_id,
          "file": "https://internal.diem25.org/.../user.jpg",
          "synchronous": "true"
        }

Esta solicitud genera un error interno del servidor. Tampoco me opongo a volver a subir el archivo como último recurso, pero a primera vista parece difícil o incluso imposible hacerlo con Faraday.

1 me gusta

¿Por qué no probar la configuración del sitio sso overrides avatar y pasar la URL del avatar con el sistema SSO? Podría ser mejor gestionar esto mediante SSO en lugar de realizar las cargas manualmente con la API.

5 Me gusta

Gracias, es una buena idea, solo plantea el problema de integración al revés, porque ahora mismo algunos usuarios tienen un avatar en Discourse y no tienen uno en mi sitio. Así que mis opciones, al parecer, son subir todos los avatares de Discourse a mi sitio y luego activar “SSO sobrescribe el avatar”, o subir todos mis avatares a Discourse. :unamused:

3 Me gusta

Creo que se debe a que en Faraday no puedes simplemente especificar una URL para un archivo; primero debe leerse como un archivo, o algo similar.

Sin embargo, puedes usar el gem discourse_api para actualizar un avatar especificando una URL:

client.update_avatar(
  username: "norbert6",
  url: "http://vignette1.wikia.nocookie.net/despicableme/images/1/15/Jerryindespicableme.png"
)
2 Me gusta