Benutzer kann nicht über API hinzugefügt werden

Hallo!

Wir versuchen, einen Benutzer über die API mit der folgenden Anfrage hinzuzufügen:

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

Unsere API-Schlüssel und Benutzer sind im Header unserer Anfrage definiert.

Diese Anfrage führt zu folgender Antwort:

Status: 200 OK
{
    "success": true,
    "active": false,
    "message": "<p>Du bist fast fertig! Wir haben eine Aktivierungsmail gesendet an <b>example address</b>. Bitte folge den Anweisungen in der E-Mail, um dein Konto zu aktivieren.</p><p>Wenn keine E-Mail ankommt, überprüfe bitte deinen Spam-Ordner.</p>"
}

Aber es wurde kein Benutzer in Discourse hinzugefügt?

In der Beispielantwort aus der Dokumentation (Discourse API Docs) gibt es eine Benutzer-ID.

Hat jemand eine Idee, warum wir keine Benutzer-ID in der Antwort erhalten?

Diese Nachricht in der Antwort:

entspricht der Bestätigungs-E-Mail:

Das bedeutet, dass der Benutzer eine Bestätigungs-E-Mail erhält. Sobald er darauf klickt, wird er erstellt.

Bist du auf der neuesten Version von Discourse? Wenn du "active": true übergibst, sollte keine E-Mail-Bestätigung gesendet werden. Siehe Creating user via API - #11 by blake.

Hallo!

Vielen Dank für deine Antwort, aber sie löst mein Problem nicht.

In meiner Beispielanfrage habe ich den Parameter „active": true verwendet, aber in der Antwort habe ich „active": false erhalten. Daher kann der Benutzer nicht aktiviert werden – vielleicht, weil er noch nicht erstellt wurde?

Unabhängig davon:

Wenn ich den Parameter „active": true nicht in meiner Anfrage sende, wird keine E-Mail an den Benutzer gesendet.

Hast du vielleicht eine Idee?

Vielen Dank!

Könntest du uns bitte mitteilen, welche Version von Discourse du verwendest? Das hilft uns zu prüfen, ob wir dein Problem nachstellen können.

Klar – wir verwenden Version 2.6.0.beta5. Für uns ist kein Update verfügbar.

Groß, danke! Ich wollte nur bestätigen, dass Sie nicht auf einer alten Version sind.

Ich bin mir ziemlich sicher, dass Ihre Anmeldeinformationen bei dieser Anfrage nicht korrekt übergeben werden. Dieser Endpunkt ist etwas Besonderes, da er in unserem Anmeldungsformular verwendet wird und tatsächlich keine API-Anmeldeinformationen erfordert, um ihn zu nutzen. Die Antwort, die Sie erhalten, wird generiert, wenn sich ein Benutzer anmeldet, wir aber feststellen, dass es sich nicht um eine API-Anfrage handelt.

Könnten Sie versuchen, eine andere API-Anfrage zu stellen, die eine Authentifizierung erfordert, wie z. B. das Erstellen einer Kategorie, und prüfen, ob dies funktioniert? Sie können auch die Admin-API-Seite aufrufen und prüfen, wann der Schlüssel zuletzt verwendet wurde, um festzustellen, ob er bei Ihrer Benutzer-Erstellungs-API-Anfrage korrekt eingesetzt wird.

Ich konnte Ihr Problem reproduzieren, indem ich eine JSON-Anfrage ohne Anmeldeinformationen gestellt habe:

JSON-Anfrage ohne Anmeldeinformationen

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\u003eSie sind fast fertig! Wir haben eine Aktivierungs-E-Mail an \u003cb\u003e8525f374d470a2e3f22c@example.com\u003c/b\u003e gesendet. Bitte folgen Sie den Anweisungen in der E-Mail, um Ihr Konto zu aktivieren.\u003c/p\u003e\u003cp\u003eWenn sie nicht ankommt, überprüfen Sie Ihren Spam-Ordner.\u003c/p\u003e"}

vs

JSON-Anfrage mit Anmeldeinformationen

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":"Ihr Konto ist aktiviert und einsatzbereit.","user_id":29}

Es hat funktioniert – die Zugangsdaten wurden nicht korrekt übergeben.

Vielen Dank für Ihre Hilfe, toller Support! :slight_smile: