Avatar hors site via API ?

J’ai un site Rails communautaire. J’utilise l’authentification unique (SSO) afin que les membres de la communauté n’aient pas à se connecter séparément à Discourse, et j’utilise l’API Discourse pour faciliter l’échange d’informations entre les deux serveurs. Maintenant, je souhaite unifier les avatars des utilisateurs, c’est-à-dire utiliser le même avatar sur le forum que sur mon site principal. Comment faire ?

J’ai essayé ce que je fais habituellement pour les requêtes API, à savoir une requête POST Faraday vers https://discuss.diem25.org/uploads.json avec la clé API et l’en-tête API-Username, ainsi que le corps suivant :

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

Cette requête entraîne une erreur interne du serveur. Je ne suis pas opposé à réimporter le fichier en dernier recours, mais cela semble difficile, voire impossible à première vue, avec Faraday.

1 « J'aime »

Pourquoi ne pas essayer le paramètre de site sso overrides avatar et transmettre l’URL de l’avatar avec le système SSO ? Il peut être préférable de gérer cela via SSO plutôt que de procéder manuellement à des uploads avec l’API.

5 « J'aime »

Merci, c’est une bonne idée. Cela pose simplement le problème d’intégration à l’envers, car actuellement, certains utilisateurs ont un avatar sur Discourse mais pas sur mon site. Mes options semblent donc être soit de télécharger tous les avatars de Discourse sur mon site puis d’activer « SSO remplace l’avatar », soit de télécharger tous mes avatars sur Discourse. :unamused:

3 « J'aime »

Je pense que c’est parce que vous ne pouvez pas simplement spécifier une URL pour un fichier dans Faraday ; il faut d’abord le lire comme un fichier, ou quelque chose dans ce genre.

Cependant, vous pouvez utiliser le gem discourse_api pour mettre à jour un avatar en spécifiant une URL :

client.update_avatar(
  username: "norbert6",
  url: "http://vignette1.wikia.nocookie.net/despicableme/images/1/15/Jerryindespicableme.png"
)
2 « J'aime »