Comment puis-je obtenir external_id à partir de l'objet user ?

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 ?

1 « J'aime »

http://localhost:3000/admin/users/1/blake.erickson.json

Affichera les informations SSO :

4 « J'aime »

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 :wink:

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/....

3 « J'aime »

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.

1 « J'aime »

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 :

2 « J'aime »

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. :wink: 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.