API로 사용자를 추가할 수 없습니다

안녕하세요!

다음과 같은 요청을 통해 API로 사용자를 추가하려고 시도하고 있습니다:

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

API 키와 사용자는 요청 헤더에 정의되어 있습니다.

이 요청에 대한 응답은 다음과 같습니다:

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>"
}

하지만 discourse에 사용자가 추가되지 않았습니다.

문서(Discourse API Docs)의 예시 응답에는 사용자 ID가 포함되어 있습니다.

응답에서 사용자 ID를 받지 못하는 이유가 무엇인지 아이디어가 있으신 분 계신가요?

응답에 포함된 그 메시지:

이것은 확인 이메일 메시지입니다:

즉, 사용자에게 확인 이메일이 전송된다는 뜻입니다. 사용자가 이메일의 링크를 클릭하면 계정이 생성됩니다.

최신 버전의 Discourse를 사용 중입니까? "active": true를 전달하면 이메일 확인이 전송되지 않아야 합니다. Creating user via API - #11 by blake 을 참고하세요.

안녕하세요!

답변 주셔서 감사하지만, 제 문제는 여전히 해결되지 않았습니다.

예시 요청에서 “active”: true 매개변수를 사용했는데, 응답에서는 “active”: false가 반환되어 사용자가 활성화되지 않습니다. 아마도 사용자가 아직 생성되지 않아서 그런 걸까요?

그와 별개로:

요청에 “active”: true 매개변수를 보내지 않으면 사용자에게 이메일이 발송되지 않습니다.

어떤 아이디어가 있을까요?

감사합니다!

사용 중인 Discourse 버전을 알려 주시겠습니까? 그러면 문제를 재현할 수 있는지 확인하는 데 도움이 됩니다.

네, 저희는 버전 2.6.0.beta5를 사용하고 있습니다.
저희에게는 사용 가능한 업데이트가 없습니다.

고맙습니다. 혹시 구버전을 사용 중이신지 확인하고 싶었습니다.

이 요청을 보내실 때 자격 증명이 실제로는 올바르게 전달되지 않는 것 같습니다. 이 엔드포인트는 가입 양식에 사용되므로 API 자격 증명이 필요하지 않은 특수한 경우입니다. 현재 받고 계신 응답은 사용자가 가입할 때 API 요청이 아니라고 감지된 경우에 반환되는 것입니다.

인증이 필요한 다른 API 요청, 예를 들어 카테고리 생성 요청을 시도해 보시고 작동하는지 확인해 주시겠습니까? 또한 관리자 API 페이지에서 키가 마지막으로 사용된 시간을 확인하여 사용자 생성 API 요청에서 키가 올바르게 사용되고 있는지 살펴볼 수도 있습니다.

자격 증명 없이 JSON 요청을 보내어 문제를 재현할 수 있었습니다:

자격 증명 없는 JSON 요청

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\u003eYou’re almost done! We sent an activation mail to \u003cb\u003e8525f374d470a2e3f22c@example.com\u003c/b\u003e. Please follow the instructions in the mail to activate your account.\u003c/p\u003e\u003cp\u003eIf it doesn’t arrive, check your spam folder.\u003c/p\u003e"}

그리고

자격 증명 있는 JSON 요청

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":"Your account is activated and ready to use.","user_id":29}


해결되었습니다 - 자격 증명이 올바르게 전달되지 않았던 것이었네요.

도와주셔서 정말 감사합니다. 훌륭한 지원이었어요! :slight_smile: