# API를 통한 external\_id 사용

**URL:** https://meta.discourse.org/t/using-external-id-via-api/252666
**Category:** Development
**Tags:** rest-api
**Created:** [1월 23, 2023, 9:23오후 UTC](https://meta.discourse.org/t/using-external-id-via-api/252666 "2023-01-23T21:23:30Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![eg-gam](https://avatars.discourse-cdn.com/v4/letter/e/9de053/32.png) [@eg-gam](https://meta.discourse.org/u/eg-gam)
#### Post date: [1월 23, 2023, 9:23오후 UTC](https://meta.discourse.org/t/using-external-id-via-api/252666/1 "2023-01-23T21:23:31Z")

</div>

안녕하세요,

API를 사용하여 external\_id를 통해 사용자를 생성하고 검색하고 싶습니다. external\_id는 내부 데이터베이스의 ID를 참조하는 정수(integer)입니다. 이는 SSO와 관련이 없습니다.

문서를 참고하고 있지만 작동하지 않는 것 같습니다. 사용자는 생성할 수 있지만 external\_id로 사용자를 검색할 수 없습니다. Create User API 요청에는 external\_ids 객체가 포함되도록 되어 있지만, 해당 객체의 내용이 무엇이어야 하는지에 대한 추가 정보는 없습니다. 커뮤니티를 검색해 보았지만 [이 주제](https://meta.discourse.org/t/api-create-user-external-ids-parameter/238470?u=eg-gam)만 찾았고, 큰 도움이 되지 않았습니다.

다음과 같은 GET 요청을 사용하여 사용자를 검색하려고 하고 있습니다:

`https://our_domain.discourse.group/u/by-external/7000.json`

하지만 404 오류와 다음과 같은 응답이 반환됩니다:

```json
{
    "errors": [
        "The requested URL or resource could not be found."
    ],
    "error_type": "not_found"
}

```

아래는 제가 시도해 본 Create User 요청의 예시입니다. 사용자는 성공적으로 생성되지만, external\_id로 검색할 수 없습니다. (참고: 사용자의 external\_id를 확인하는 방법도 있을까요?):

```json
{
    "name": "John",
    "username": "Doe",
    "email": "john.doe@example.com",
    "password": "Z44Di3AeD93KoRUyxpyE",
    "active": true,
    "approved": true,
    "external_id": 7000
}

```

```json
{
    "name": "John",
    "username": "Doe",
    "email": "john.doe@example.com",
    "password": "Z44Di3AeD93KoRUyxpyE",
    "active": true,
    "approved": true,
    "external_id": "7000"
}

```

```json
{
    "name": "John",
    "username": "Doe",
    "email": "john.doe@example.com",
    "password": "Z44Di3AeD93KoRUyxpyE",
    "active": true,
    "approved": true,
    "external_ids": {
        "external_id": 7000
    }
}

```

```json
{
    "name": "John",
    "username": "Doe",
    "email": "john.doe@example.com",
    "password": "Z44Di3AeD93KoRUyxpyE",
    "active": true,
    "approved": true,
    "external_ids": [
        7000
    ]
}

```

---

<div class="post-metadata">

### Author: ![simon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon/32/339122_2.png) [@simon](https://meta.discourse.org/u/simon)
#### Post date: [1월 23, 2023, 10:35오후 UTC](https://meta.discourse.org/t/using-external-id-via-api/252666/2 "2023-01-23T22:35:03Z")

</div>

> [@eg-gam](#):
>
> 이것은 SSO와 관련이 없습니다.

사이트에서 [DiscourseConnect](https://meta.discourse.org/t/13045?silent=true)가 활성화되어 있나요? 활성화되어 있지 않다면, 인증 제공자의 이름을 찾아 요청에 사용해야 합니다. 이 주제에 대한 세부 사항은 여기에서 확인할 수 있습니다: [Finding a user by their identity provider 'external ID'](https://meta.discourse.org/t/find-a-user-by-their-identity-provider-external-id/169723).

---

<div class="post-metadata">

### Author: ![eg-gam](https://avatars.discourse-cdn.com/v4/letter/e/9de053/32.png) [@eg-gam](https://meta.discourse.org/u/eg-gam)
#### Post date: [1월 24, 2023, 12:00오전 UTC](https://meta.discourse.org/t/using-external-id-via-api/252666/3 "2023-01-24T00:00:27Z")

</div>

답변해 주셔서 감사합니다.

이는 [DiscourseConnect](https://meta.discourse.org/t/13045?silent=true)를 활성화하지 않으므로 external\_id를 사용할 수 없음을 의미하는 것 같습니다. Discourse 인증을 대체할 의도도 없습니다.

따라서 API를 통해 사용자를 생성한 후, 해당 Discourse user.id를 우리 시스템에 저장하고 이를 참조하는 방식으로 처리해야 할 것 같습니다.
