En tant que modérateur, j’aimerais utiliser l’API pour un forum Discourse. Normalement, elle était activée et j’ai réussi à obtenir une clé API. J’ai utilisé ce script :
J’ai réussi à récupérer une clé qui fait 32 caractères de long (est-ce correct ?), et dans les paramètres de sécurité de mon compte, l’application s’affiche avec ces autorisations :
Lire tout
Écrire tout
Mises à jour en direct
Notifications push vers des services externes
Lire et effacer les notifications
Lire les informations de session utilisateur
Créer un jeton de connexion unique
Cela semble plutôt bien. Cependant, lorsque j’essaie d’accéder via un script avec :
from pydiscourse import DiscourseClient
client = DiscourseClient(
'https://forum.example.com',
api_username='tflidd',
api_key='388b79103056fede1d3223dae032df99')
client.user("tflidd")
C’est une bibliothèque Python, donc je suppose qu’elle devrait fonctionner. La clé API a ce format spécifique, ce n’est pas la clé réelle. Je reçois une erreur indiquant que le nom d’utilisateur ou la clé API ne sont pas valides.
Dois-je utiliser mon nom d’utilisateur ou le nom de l’application ?
La clé API a-t-elle au moins le bon format, peut-être que le déchiffrement a échoué ?
Si j’utilise curl comme ici (Discourse-user-notes API - #4 by codetricity) :
curl https://forum.example.com/t/95783.json\ -H 'Api-Key: 388b79103056fede1d3223dae032df99'\ -H 'Api-Username: tflidd'
J’obtiens également une erreur :
{"errors":["You are not permitted to view the requested resource. The API username or key is invalid."],"error_type":"invalid_access"}
Si j’ouvre la même URL avec le JSON dans mon navigateur où je suis connecté, le navigateur web affiche le bon objet JSON. Donc le sujet existe et j’ai les permissions pour y accéder (c’était même un sujet public).
Je suis juste modérateur, sans accès administrateur direct. Je pourrais demander plus d’informations dans les logs, si vous avez des pistes à explorer.
Au cas où cela aurait de l’importance, la version installée est : 3.2.0.beta4-dev