Nous disposons d’une application de forum Discourse connectée à notre application via SSO. Les avatars des utilisateurs sont mis à jour directement via ce mécanisme. Cependant, nos photos sont modérées, nous devons donc effacer les avatars des utilisateurs côté l’application Discourse.
Est-il possible de le faire via l’API REST ou par des améliorations du mécanisme SSO ? Je ne trouve pas cette information dans la documentation.
Vous devriez pouvoir appeler la route sync_sso pour resynchroniser l’avatar de l’utilisateur, mais vous pouvez également envoyer une requête PUT vers http://localhost:3000/u/<username>/preferences/avatar/pick avec un upload_id vide
Nous utilisons un point de terminaison SSO, mais il ne met à jour l’avatar de l’utilisateur qu’au moment de la connexion. Dans notre cas, nous devons le mettre à jour manuellement.
Voici un exemple de code Ruby utilisant le gem discourse_api que vous pouvez consulter comme référence. Le point de terminaison sync_sso diffère légèrement des autres, car vous devez lui envoyer un charge utile signée.
Ai-je bien compris que nous pouvons envoyer POST /admin/users/sync_sso?api_key=...&api_username=...&sso=...&sig=... ?
Les paramètres ‘sso’ et ‘sig’ sont-ils similaires à ceux du flux d’autorisation SSO ?
J’ai essayé d’effectuer la requête comme expliqué ci-dessus POST /admin/users/sync_sso?api_key=...&api_username=...&sso=...&sig=... et elle a répondu 200 avec mon utilisateur, mais l’avatar de l’utilisateur n’a pas été mis à jour sans aucun événement de journalisation. Qu’est-ce que je fais mal ?
Vous devez inclure api_key et api_username dans l’en-tête HTTP, car leur utilisation dans les paramètres de requête est dépréciée.
Je pense qu’il doit y avoir une protection dans le code qui empêche la suppression accidentelle d’un avatar si le champ est omis ou vide. Vous devrez probablement fournir une URL vers un avatar par défaut pour remplacer l’avatar existant.
J’ai remplacé les identifiants API par des en-têtes.
La synchronisation SSO n’a pas mis à jour l’avatar de l’utilisateur avec celui fourni. Bien que le travail Sidekiq dans cet appel ait été terminé et qu’aucun journal d’erreur ou d’avertissement n’ait été enregistré.