Impossible de verrouiller le post avec l'API

Je fais quelques appels API depuis mon application vers Discourse pour modifier des publications.

Dans le premier appel, je modifie la publication. Cela fonctionne très bien. Dans l’appel suivant, j’essaie de verrouiller la publication.

Mon appel de verrouillage de publication depuis JavaScript ressemble à ceci

fetch(`https://forum.hollowverse.com/posts/1817/locked.json`, {
  method: 'PUT',
  headers: {
    'Api-Key': process.env.DISCOURSE_SYSTEM_PRIVILEGE_SECRET,
    'content-type': 'application/json',
    'Api-Username': 'hollowbot',
  },
  body: JSON.stringify({locked: true}),
});

Lorsque j’exécute cet appel, Discourse me répond avec {locked: false}.

J’ai essayé de verrouiller la publication manuellement et d’inspecter l’appel API que le client Discourse effectue, et il semble très similaire à celui que je fais depuis mon application, à l’exception de la méthode d’authentification, peut-être.

Je ne suis pas sûr de ce qui se passe, des idées ?

Je ne vois pas de problème évident. L’avez-vous obtenu en suivant Comment faire de l’ingénierie inverse de l’API Discourse ? C’est ce que je ferais pour aider si j’étais à mon ordinateur.

1 « J'aime »

L’API pour verrouiller un post est documentée ici Discourse API Docs mais oui, j’ai aussi essayé d’effectuer une ingénierie inverse de la manière dont le client Discourse le fait, et cela ressemble beaucoup à la façon dont je le fais depuis mon application.

1 « J'aime »

Le code est
\n
params[:locked] === \"true\" ? locker.lock : locker.unlock
\n
Ce qui semble faire une comparaison de chaîne de caractères.
\n
Cela signifie que vous devriez envoyer \"locked\": \"true\" et non \"locked\": true, et que la documentation ou le code devraient être mis à jour pour refléter ou modifier ce comportement.
\n
Le navigateur n’envoie pas de requête JSON, il envoie Content-Type: application/x-www-form-urlencoded qui interprétera le paramètre comme une chaîne de caractères, et c’est pourquoi cela fonctionne dans le navigateur.

2 « J'aime »

Merci pour votre aide Richard !

TIL !

Et je vais examiner la possibilité de proposer une mise à jour de la documentation.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.