È successo qualcosa di strano quando ho creato un utente tramite API

Quando test l’API users.json, uso Postman per creare un utente: funziona ed è attivato di default, il che significa che active=true funziona.

Ma quando creo un utente con codice in Node.js, con gli stessi parametri, active=true non funziona più, anche se ricevo un messaggio di successo…

Dice:

success: true,
active: false,

Come è possibile? Non lo vedo nemmeno nel backend.

Il mio sospetto è che il tuo codice Node.js non stia passando correttamente la chiave API, quindi non ti viene consentito di sovrascrivere il parametro active. Se puoi condividere qui un frammento del tuo codice, potremmo essere in grado di aiutarti.

Ciao David, grazie:

ecco la mia richiesta:

{
 "url": "users.json",
 "method": "post",
 "data": {
      "api_key": "57d06a163190ee90de1118ac2adbaf5eeb5aa93d4d02dbe8f5d424c388f126e294c",
      "api_username": "Nathan001",
      "name": "tokgood",
      "email": "tokgood@qq.com",
      "password": "64c6457d-b815-4e87-8ea1-e66becd710bc",
      "username": "2cx9pyCMyn",
      "active": true,
      "approved": true
 },
 "headers": {
      "common": {
           "Accept": "application/json, text/plain, */*"
      },
      "delete": {},
      "get": {},
      "head": {},
      "post": {
           "Content-Type": "application/x-www-form-urlencoded"
      },
      "put": {
           "Content-Type": "application/x-www-form-urlencoded"
      },
      "patch": {
           "Content-Type": "application/x-www-form-urlencoded"
      },
      "content-type": "multipart/form-data"
 },
 "baseURL": "https://www.tuntry.com/",
 "transformRequest": [
      null
 ],
 "transformResponse": [
      null
 ],
 "timeout": 60000,
 "xsrfCookieName": "XSRF-TOKEN",
 "xsrfHeaderName": "X-XSRF-TOKEN",
 "maxContentLength": -1
}

Ho controllato due volte l’utente API e la chiave, sono corretti.

Ho appena incapsulato una richiesta POST con Axios.

   const post = (url, data) => service.post(url, {
   api_key: Config.discourse.api_key,
   api_username: Config.discourse.api_username,
  ...data,
 }
)

Non conosco molto Node, ma per quanto riesco a vedere, sembra tutto a posto.

Una cosa che potresti provare è inviare le credenziali API tramite le intestazioni HTTP invece che come parametri. L’invio tramite parametri è deprecato e genererà un avviso nel tuo pannello di amministrazione. I nomi delle intestazioni sono Api-Key e Api-Username (nota i trattini, non gli underscore). Maggiori informazioni qui.

Ottimo lavoro, sì l’ho risolto dopo aver aggiunto Api-Key e Api-Username e 'content-type': 'application/json', all’header!