Lorsque j’utilise l’API pour récupérer l’objet utilisateur Discourse, cela fonctionne bien, mais je ne vois pas l’external_id inclus. Si j’ai un ID ou un nom d’utilisateur Discourse, comment puis-je obtenir l’external_id à partir de cela ?
Aha - j’appelais /users/blake.erickson.json (sans /admin), ce qui renvoie aussi un objet utilisateur, mais sans single_sign_on_record.
Hé, pourquoi est-ce que le point de terminaison /users/ accepte (seulement ?) un nom d’utilisateur, alors que si vous voulez récupérer un utilisateur par son ID Discourse, c’est /admin/users/:id.json ? Juste des bizarreries de la conception de l’API ?
Autre bizarrerie : si je récupère un utilisateur par son external_id en appelant /users/by-external/:id.json, je ne reçois pas le single_sign_on_record.
Donc l’API a quelques bizarreries… parfois un objet utilisateur contient les propriétés single_sign_on_record, parfois non ![]()
Par conception, le point de terminaison admin renverra plus de données que le point de terminaison non admin. Oui, ils récupèrent tous deux des enregistrements « utilisateur », mais ce serait très problématique si le point de terminaison /user/... accessible aux utilisateurs réguliers renvoyait la même chose que /admin/user/....
Aha, je ne réalisais pas que le point de terminaison /user serait accessible aux utilisateurs individuels. J’avais oublié qu’il existait des clés API utilisateur.
Je continue d’être dérouté par les incohérences. Pour l’instant, si je veux obtenir single_sign_on_record, je dois connaître l’ID utilisateur Discourse ( /admin/users/:username.json ne fonctionne pas)… mais la plupart des autres appels API semblent exiger le nom d’utilisateur (comme /users/:username.json).
Ensuite, il existe des points de terminaison API distincts qui sont très similaires et semblent presque identiques, mais qui retournent des résultats différents, par exemple /admin/users me donne les données single_sign_on_record pour l’utilisateur, mais l’appel de /users/ seul ne le fait pas.
Rien de tout cela n’est grave, je m’y fais au fur et à mesure… une fois que j’aurai avancé davantage, je verrai si je peux ajuster un peu la documentation et rendre certaines choses plus claires.
La distinction ici provient du fait que les points de terminaison renvoient les données nécessaires au rendu des pages dans l’interface utilisateur. Jetez un œil ici :
Bien sûr, je comprends tout à fait — et j’utilise cette astuce pour surveiller toutes ces requêtes XHR. Tout va bien, c’est juste… inconstant.
Mais je suis infiniment reconnaissant que Discourse dispose d’une API aussi puissante !
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
