Impossibile aggiungere utente tramite API

Ciao!

Stiamo cercando di aggiungere un utente tramite API con la seguente richiesta:

POST https://discourse.example.de/users
{
    "name": "Bob Tester",
    "email": "example address",
    "password": "#######",
    "username": "testi",
    "active": true,
    "approved": false
}

La nostra chiave API e il nostro utente sono definiti nell’intestazione della nostra richiesta.

Questa richiesta restituisce la seguente risposta:

Status: 200 OK
{
    "success": true,
    "active": false,
    "message": "<p>Sei quasi pronto! Abbiamo inviato una mail di attivazione a <b>example address</b>. Segui le istruzioni nella mail per attivare il tuo account.</p><p>Se non ricevi la mail, controlla la cartella spam.</p>"
}

Ma non risulta aggiunto alcun utente su Discourse?

Nella risposta di esempio della documentazione (Discourse API Docs) c’è un ID utente.

Qualcuno ha un’idea sul motivo per cui non riceviamo un ID utente nella risposta?

Quel messaggio nella risposta:

è il messaggio dell’email di conferma:

il che significa che l’utente riceve un’email di conferma. Una volta che ci clicca sopra, l’account verrà creato.

Stai utilizzando l’ultima versione di Discourse? Se passi "active": true, non dovrebbe essere inviata alcuna email di conferma. Consulta Creating user via API - #11 by blake.

2 Mi Piace

Ciao!

Grazie per la tua risposta, ma non risolve il mio problema.

Nella mia richiesta di esempio ho usato il parametro “active”: true, ma nella risposta ho ricevuto “active”: false, quindi l’utente non può essere attivato - forse perché non è stato creato?

Indipendentemente da ciò:

Se non invio il parametro “active”: true nella mia richiesta, non viene inviata alcuna email all’utente.

Hai qualche idea?

Grazie!

Puoi farci sapere quale versione di Discourse stai utilizzando? Questo ci aiuterà a capire se possiamo replicare il tuo problema.

Certo - stiamo utilizzando la versione 2.6.0.beta5.
Non è disponibile alcun aggiornamento per noi.

1 Mi Piace

Grazie mille, volevo solo confermare che non stavi utilizzando una versione obsoleta.

Sono quasi certo che le tue credenziali non vengano effettivamente passate correttamente durante questa richiesta. Questo endpoint è particolare perché viene utilizzato nel nostro modulo di registrazione e in realtà non richiede credenziali API per essere utilizzato. La risposta che stai ricevendo si ottiene quando un utente si registra, ma rileviamo che non si tratta di una richiesta API.

Potresti provare a effettuare un’altra richiesta API che richieda l’autenticazione, come la creazione di una categoria, e verificare se funziona? Puoi anche controllare la pagina dell’API di amministrazione e vedere quando la chiave è stata utilizzata per l’ultima volta, per verificare se viene utilizzata correttamente nella tua richiesta API di creazione utente.

Sono riuscito a replicare il tuo problema effettuando una richiesta JSON senza credenziali:

richiesta JSON senza credenziali

curl -i -sS -X POST "http://localhost:3000/users.json" -H "Content-Type: application/json" -d "{\"name\": \"8525f374d470a2e3f22c\", \"active\": \"true\", \"username\": \"8525f374d470a2e3f22c\", \"email\": \"8525f374d470a2e3f22c@example.com\", \"password\": \"65d18e465472452771e02b3462260ea1\"}"

HTTP/1.1 200 OK

{"success":true,"active":false,"message":"\u003cp\u003eSei quasi alla fine! Abbiamo inviato un'email di attivazione a \u003cb\u003e8525f374d470a2e3f22c@example.com\u003c/b\u003e. Segui le istruzioni contenute nell'email per attivare il tuo account.\u003c/p\u003e\u003cp\u003eSe non arriva, controlla la cartella spam.\u003c/p\u003e"}

vs

richiesta JSON con credenziali

curl -i -sS -X POST "http://localhost:3000/users.json" -H "Content-Type: application/json" -H "Api-Key: 079fb2bb12d3b436bb11bde8eb58aaa9a36560fa7d79b14b3087aa40b1ebc2c4" -H "Api-Username: blake.erickson" -d "{\"name\": \"da4be85b6046f9c9b9e1\", \"active\": \"true\", \"username\": \"da4be85b6046f9c9b9e1\", \"email\": \"da4be85b6046f9c9b9e1@example.com\", \"password\": \"65d6f0589c5f234de4ad31662b3a17a2\"}"

HTTP/1.1 200 OK

{"success":true,"active":true,"message":"Il tuo account è attivato e pronto per l'uso.","user_id":29}

1 Mi Piace

Ha funzionato: le credenziali non erano state trasmesse correttamente.

Grazie mille per il tuo aiuto, ottimo supporto! :slight_smile:

1 Mi Piace

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