Errore 404 restituito durante l'uso del gem DiscourseAPI per generare una chiave API utente

Ciao,

Sto cercando una soluzione a questo problema e spero che qualcuno qui possa darmi qualche indicazione. Recentemente mi sono unito a un nuovo progetto, sostituendo uno sviluppatore precedente. Ho appena aggiornato la build di Discourse all’ultima versione, dopo essere rimasto indietro di alcuni mesi, e tutte le altre funzionalità e chiamate API funzionano come previsto.

Quello che sto cercando di fare è utilizzare l’API per creare un argomento su Discourse dal nostro sito web, al di fuori di Discourse. Prendo l’ID dell’utente e lo cerco su Discourse utilizzando il metodo DiscourseAPI by_external_id. Una volta ottenuto, chiamo generate_user_api_key(discourse_user[‘id’]), passando l’ID dell’utente su Discourse.

La risposta è un errore DiscourseApi::NotFoundError / 404, che si verifica solo dopo l’aggiornamento.

Qualsiasi aiuto o indicazione sarà molto apprezzato!

2 Mi Piace

The route for generating API keys has changed, but the method in the Discourse API gem that’s used for generating an API key is still calling the old route. That’s why you are getting the 404 error.

We will get this fixed. For now, if you would like to generate an API key for a user, you can do it by making a POST request to http://localhost:3000/admin/api/keys". Here’s an example CURL request. I’ve substituted my actual API key with $api_key in the example:

curl -X POST "http://localhost:3000/admin/api/keys" \
-H "Content-Type: multipart/form-data;" \
-H "Api-Key: $api_key" \
-H "Api-Username: system" \
-F "key[description]=a key for bobby" \
-F "key[username]=bobby"

You do not need to generate a user API key for this. Instead, you can set client.api_username to the username you want to use to publish the post:

client.api_username = "susan"
client.create_topic(category: 5, title: "Susan's really awesome API topic", skip_validation: true, raw: "this is a test, this is only a test")

client.api_username = "bobby"
client.create_topic(category: 5, title: "Bobby's really awesome API topic", skip_validation: true, raw: "this is a test, this is only a test")

This will work correctly as long as you used the All Users API key when you created the client.

3 Mi Piace

Thank you!

I updated my code to use the “All Users” key instead of generating one for each user and pass the user’s username as the api_username and that fixed it.

2 Mi Piace

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