# 사용자 생성 API: 'active' 속성을 True로 설정했는데 응답에서 False로 반환됩니다

**URL:** https://meta.discourse.org/t/user-creation-api-active-attribute-set-to-true-but-returns-false-in-response/344908
**Category:** Support
**Tags:** rest-api
**Created:** [12월 30, 2024, 4:39오후 UTC](https://meta.discourse.org/t/user-creation-api-active-attribute-set-to-true-but-returns-false-in-response/344908 "2024-12-30T16:39:14Z")
**Posts on this page:** 12
**Page:** 1

<div class="post-metadata">

### Author: ![luigi7up](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/luigi7up/32/477213_2.png) [@luigi7up](https://meta.discourse.org/u/luigi7up)
#### Post date: [12월 30, 2024, 4:39오후 UTC](https://meta.discourse.org/t/user-creation-api-active-attribute-set-to-true-but-returns-false-in-response/344908/1 "2024-12-30T16:39:14Z")

</div>

안녕하세요,

Python을 사용하여 Discourse API를 통해 사용자를 생성하고 있습니다. 사용자 생성 요청은 성공 응답을 반환하지만, 페이로드에서 `active` 속성을 명시적으로 `true`로 설정했음에도 불구하고 응답의 `active` 속성이 항상 `false`로 나오는 문제가 발생하고 있습니다. `confirmed` 속성은 `true`로 설정되어 있으며 정상적으로 작동합니다.

다음은 제 코드입니다:

```python
import csv
import requests
import json
from datetime import datetime

# Discourse API 정보
discourse_url = "https://forum.hobiguru.com/" # Discourse URL로 대체
api_key = "your-api-key" # Discourse API 키로 대체
api_username = "system" # 관리자 사용자 이름

# 요청 헤더
headers = {
    "Api-Key": api_key,
    "Api-Username": api_username,
    "Content-Type": "application/json"
}

# 사용자 생성 함수
def create_user(username, name, email, password, bio, location, confirmed, active, join_date):
    url = f"{discourse_url}/users.json"
    join_date_str = join_date.strftime('%Y-%m-%dT%H:%M:%SZ')

    payload = {
        "name": name,
        "email": email,
        "password": password,
        "username": username,
        "active": True, # 기본값으로 active를 True로 설정
        "confirmed": True, # 기본값으로 confirmed를 True로 설정
        "created_at": join_date_str
    }

    print(f"\nRequest URL: {url}")
    print(f"Request Headers: {json.dumps(headers, indent=2)}")
    print(f"Request Payload: {json.dumps(payload, indent=2)}")

    response = requests.post(url, json=payload, headers=headers)
    
    if response.status_code == 200:
        response_json = response.json()
        if response_json.get("success"):
            print(f"User creation successful: {json.dumps(response_json, indent=2)}")
        else:
            print(f"User creation failed. Reason: {response_json.get('message')}")
            print(f"Errors: {json.dumps(response_json.get('errors'), indent=2)}")
    else:
        print(f"Request failed: {response.status_code}, {response.text}")

# CSV 파일에서 사용자 읽기
with open('input_users.csv', mode='r', encoding='utf-8') as file:
    reader = csv.DictReader(file)
    for row in reader:
        # 행에서 사용자 정보 추출
        create_user(row['Username'], row['Name'], row['Email'], row['Password'], row['Bio'], row['Location'], row['Confirmed'] == 'TRUE', row['Active'] == 'TRUE', datetime.strptime(row['Join Date'], '%Y-%m-%dT%H:%M:%SZ'))

```

다음과 같이 출력됩니다:

```terminal
 Request to create a user

{'name': 'Goran', 'email': 'bla+blaaa@gmail.com', 'password': 'P@ssword!23', 'username': 'goran12', 'active': True, 'confirmed': True, 'created_at': '2024-11-04T10:20:34Z'}
Request URL: https://forum.hobiguru.com/users.json
Request Headers:
{
  "Api-Key": "d9---------------e564d65d9b5a3",
  "Api-Username": "system",
  "Content-Type": "application/json"
}
Request Payload:
{
  "name": "Goran",
  "email": "'bla+blaaa@gmail.com",
  "password": "P@ssword!23",
  "username": "goran12",
  "active": true,
  "confirmed": true,
  "created_at": "2024-11-04T10:20:34Z"
}
Response:

Full Response: {
  "success": true,
  "active": false,
  "message": "Va\u0161 ra\u010dun je aktiviran i spreman za kori\u0161tenje."
}
Request was successful and user got created:
{'success': True, 'active': False, 'message': 'Vaš račun je aktiviran i spreman za korištenje.'}

```

**문제:**

• 페이로드에 `"active": True`를 전달했음에도 불구하고 응답의 `active` 속성은 항상 `false`이며, Discourse 관리자 패널에서 사용자를 검색해 보아도 찾을 수 없습니다.

• API는 `success: true`를 반환하지만, 사용자가 완전히 활성화되지 않은 것처럼 보입니다.

**질문:**

1. `active` 속성이 올바르게 설정되지 않도록 할 수 있는 요청에 누락된 부분이 있을까요?

2. `active` 속성이 명시적으로 `true`로 설정되어 있더라도 이를 덮어쓸 수 있는 Discourse API의 특정 조건이 있을까요?

어떤 통찰이나 조언도 큰 도움이 될 것입니다!

---

<div class="post-metadata">

### Author: ![MihirR](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mihirr/32/475158_2.png) [@MihirR](https://meta.discourse.org/u/MihirR)
#### Post date: [12월 30, 2024, 8:01오후 UTC](https://meta.discourse.org/t/user-creation-api-active-attribute-set-to-true-but-returns-false-in-response/344908/2 "2024-12-30T20:01:45Z")

</div>

이 스크립트를 한 번 실행해 보시면 도움이 될 수 있습니다. 여기 있습니다: [Discourse 포럼용 더미 사용자 생성 스크립트](https://meta.discourse.org/t/a-script-to-create-dummy-users-for-your-discourse-forum/342251).

또한, 스크립트는 꽤 잘 작동하는 것 같지만, 문제는 CSV 파일에 사용 중인 데이터에 있습니다.

저는 다음과 같은 샘플 데이터를 사용하여 코드를 테스트해 보았습니다:

```plaintext
Username,Name,Email,Password,Bio,Location,Confirmed,Active,Join Date
Paul,Paul Paul,paul@example.com,tough001!@,This is Paul,Australia,TRUE,TRUE,2023-12-30T14:00:00Z
radhika01,Radhika Singh,singhradhika@example.com,tough001!@,This is Radhika Tomar,India,TRUE,TRUE,2023-12-30T14:00:00Z

```

제 환경에서는 완벽하게 작동했습니다. 몇 가지 주의할 점이 있습니다: 비밀번호는 최소 12자 이상이어야 하며, 강력한 비밀번호를 사용해야 합니다.

한 번 시도해 보시고, 작동하는지 알려주세요 :))

---

<div class="post-metadata">

### Author: ![luigi7up](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/luigi7up/32/477213_2.png) [@luigi7up](https://meta.discourse.org/u/luigi7up)
#### Post date: [12월 31, 2024, 11:23오전 UTC](https://meta.discourse.org/t/user-creation-api-active-attribute-set-to-true-but-returns-false-in-response/344908/3 "2024-12-31T11:23:01Z")

</div>

![사용자 등록 엔드포인트에 대한 두 가지 성공적인 POST 요청을 표시하는 터미널 창. (AI가 캡션을 달음)](https://global.discourse-cdn.com/meta/original/4X/5/0/a/50a54436c7206eea849845c4ece565eaed60d97b.jpeg)

@MihirR 안녕하세요

답변 주시고 이 문제로 도와주셔서 정말 감사합니다. 진심으로 감사드립니다.

문제를 찾은 것 같습니다. 문제가 있었던 것은 제가 사용하던 이메일 주소였습니다. 구체적으로, 더미 사용자를 위해 사용했던 플러스 기호가 포함된 이메일(Gmail 별칭처럼 `whatever+something@gmail.com`, `whatever+something2@gmail.com` 형태)이 문제였습니다. 플러스 기호가 없는 이메일을 사용하면 모든 것이 정상적으로 작동하며, CSV 샘플의 경우처럼 사용자가 정상적으로 생성됩니다. **하지만, 플러스 기호가 포함된 이메일을 사용하면 API가 이를 올바르게 처리하지 않는 것 같습니다.**

스크린샷에서 이메일에 플러스 기호가 있는 경우와 없는 경우의 curl 호출 2건을 볼 수 있습니다…

**이상한 점은 플러스 기호를 사용할 때 에러가 발생하지 않는다는 것입니다.** 실제로 계정이 생성되고 활성화되었다는 성공 응답을 받지만, 이는 사실과 다릅니다. Rails 콘솔에서 직접 확인하고 데이터베이스에 연결해 보았지만, 해당 사용자는 존재하지 않았습니다. Discourse 관리자 화면에서도 사용자가 표시되지 않았습니다.

API 응답에 문제가 있는 것 같습니다. 사용자의 생성과 활성화가 성공적으로 보고됩니다(죄송합니다, 스크린샷의 문자열은 크로아티아어입니다) 하지만 시스템에 사용자는 실제로 생성되지 않습니다. 이는 이메일에 특수 문자(플러스 기호 등)가 사용될 때 API가 사용자 생성을 처리하거나 보고하는 방식에 문제가 있을 수 있음을 시사합니다.

다시 한번 도움 주셔서 감사드리며, 혹시 도움이 될까 해서 이 발견 사항을 공유해 봅니다!

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [12월 31, 2024, 11:29오전 UTC](https://meta.discourse.org/t/user-creation-api-active-attribute-set-to-true-but-returns-false-in-response/344908/4 "2024-12-31T11:29:10Z")

</div>

> [@luigi7up](#):
>
> 플러스 기호처럼

사용자 인스턴스에서 `normalize_emails` 사이트 설정은 어떻게 구성되어 있나요?

---

<div class="post-metadata">

### Author: ![Firepup650](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/firepup650/32/465200_2.png) [@Firepup650](https://meta.discourse.org/u/Firepup650)
#### Post date: [12월 31, 2024, 5:12오후 UTC](https://meta.discourse.org/t/user-creation-api-active-attribute-set-to-true-but-returns-false-in-response/344908/5 "2024-12-31T17:12:24Z")

</div>

> [@luigi7up](#):
>
> 성공적으로 생성 및 활성화되었다고 보고합니다

`"active": false`가 활성화가 되지 않았음을 의미한다고 가정하면, 실제로는 활성화가 실패했다고 보고하는 것으로 보입니다.

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [12월 31, 2024, 7:43오후 UTC](https://meta.discourse.org/t/user-creation-api-active-attribute-set-to-true-but-returns-false-in-response/344908/6 "2024-12-31T19:43:43Z")

</div>

> [@Firepup650](#):
>
> 활성이 제대로 작동하지 않았다고 보고하는 것 같습니다

> [@luigi7up](#):
>
> `"message": "Va\u0161 ra\u010dun je aktiviran i spreman za kori\u0161tenje."`

응답의 message 키에는 "계정이 활성화되어 사용 준비가 되었습니다."라고 되어 있는데, 이는 잘못된 내용입니다.

---

<div class="post-metadata">

### Author: ![luigi7up](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/luigi7up/32/477213_2.png) [@luigi7up](https://meta.discourse.org/u/luigi7up)
#### Post date: [1월 1, 2025, 10:10오전 UTC](https://meta.discourse.org/t/user-creation-api-active-attribute-set-to-true-but-returns-false-in-response/344908/7 "2025-01-01T10:10:52Z")

</div>

맞아요, 전체에서 잘못된 부분이 바로 그겁니다. 파라미터에는 `active:false`라고 되어 있는데, 메시지에는 "계정이 활성화되어 사용 준비가 완료되었습니다"라고 되어 있거든요.

---

<div class="post-metadata">

### Author: ![luigi7up](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/luigi7up/32/477213_2.png) [@luigi7up](https://meta.discourse.org/u/luigi7up)
#### Post date: [1월 1, 2025, 10:11오전 UTC](https://meta.discourse.org/t/user-creation-api-active-attribute-set-to-true-but-returns-false-in-response/344908/8 "2025-01-01T10:11:24Z")

</div>

안녕하세요, 응답 매개변수에는 `active:false`라고 표시되어 있지만, 메시지는 \*“계정이 활성화되어 사용 준비가 완료되었습니다”\*라고 나와 있습니다.

---

<div class="post-metadata">

### Author: ![luigi7up](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/luigi7up/32/477213_2.png) [@luigi7up](https://meta.discourse.org/u/luigi7up)
#### Post date: [1월 1, 2025, 10:14오전 UTC](https://meta.discourse.org/t/user-creation-api-active-attribute-set-to-true-but-returns-false-in-response/344908/9 "2025-01-01T10:14:16Z")

</div>

> [@Moin](#):
>
> normalize\_emails

확인해 보지는 않았지만, 확인해 보겠습니다. 여기에서 공지된 것 같습니다: [Enabling e-mail normalization by default](https://meta.discourse.org/t/enabling-e-mail-normalization-by-default/338641)

---

<div class="post-metadata">

### Author: ![luigi7up](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/luigi7up/32/477213_2.png) [@luigi7up](https://meta.discourse.org/u/luigi7up)
#### Post date: [1월 1, 2025, 10:51오전 UTC](https://meta.discourse.org/t/user-creation-api-active-attribute-set-to-true-but-returns-false-in-response/344908/10 "2025-01-01T10:51:46Z")

</div>

![웹사이트 설정 페이지의 스크린샷. "normalize emails" 설정이 빨간색 상자로 강조되어 있습니다. (AI가 캡션을 생성함)](https://global.discourse-cdn.com/meta/original/4X/6/7/3/673fbb3025df7dc345d1fa2979045c6864ec56bd.png)  
네, 실패의 원인이 `normalize_email:true` 플래그인 것 같습니다. 이 설정은 기본적으로 true로 되어 있죠. 이 설정을 끄자 사용자가 생성되었습니다… 하지만 API는 `normalize_emails` 플래그를 무시하고, 실제로는 사용자가 생성되거나 활성화되지 않았음에도 성공을 반환하고 있습니다 😕 이 문제를 discourse GitHub에 보고해야 할까요?

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [1월 1, 2025, 1:08오후 UTC](https://meta.discourse.org/t/user-creation-api-active-attribute-set-to-true-but-returns-false-in-response/344908/11 "2025-01-01T13:08:26Z")

</div>

> [@luigi7up](#):
>
> discourse의 github에 이 문제를 보고해야 하나요?

아니면 #Contribute > Bug #rest-api 주제를 열어드릴까요? 🙂

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [1월 31, 2025, 1:09오후 UTC](https://meta.discourse.org/t/user-creation-api-active-attribute-set-to-true-but-returns-false-in-response/344908/12 "2025-01-31T13:09:01Z")

</div>

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