API에 비공개 사용자 커스텀 필드 추가

:bookmark: 이 가이드는 사용자 카드에 표시하지 않으면서도 API를 통해 사용자 커스텀 필드 데이터를 노출하는 방법을 설명합니다.

:person_raising_hand: 필요한 사용자 권한: 관리자

이 가이드에서는 사용자 카드에 표시하지 않으면서도 API를 통해 사용자 커스텀 필드 데이터에 접근할 수 있도록 하는 과정을 안내합니다. 이는 일반 사용자에게는 숨기면서 프로그래밍 방식으로 사용자 커스텀 데이터에 접근해야 할 때 유용합니다.

사용자 커스텀 필드 생성

  1. 먼저 사용자 커스텀 필드를 생성합니다. 자세한 설명은 커스텀 사용자 필드 생성 및 구성 가이드를 참고하세요.
  2. 커스텀 필드 설정이 완료되면 저장합니다.

사용자 커스텀 필드 ID 찾기

  1. 브라우저에서 /admin/config/user-fields.json으로 이동합니다.
  2. 새로 생성한 커스텀 필드를 찾아 해당 ID 번호를 기록합니다.

API 접근 구성

  1. 사이트 관리자 설정으로 이동합니다.
  2. public user custom fields 또는 staff user custom fields 설정을 찾습니다:
    • 모든 API 사용자가 데이터에 접근할 수 있도록 하려면 public user custom fields를 사용합니다.
    • 스태프 API 키로만 접근을 제한하려면 staff user custom fields를 사용합니다.
  3. user_field_X 형식으로 커스텀 필드를 입력합니다. 여기서 X는 앞서 기록한 ID 번호입니다.
    예를 들어, 커스텀 필드 ID가 7이라면 user_field_7을 입력합니다.

커스텀 필드 데이터 접근

구성 완료 후, 커스텀 필드 데이터는 “User Fields” 섹션 아래에 /u/[USERNAME].json 엔드포인트에 포함됩니다.

커스텀 필드 값으로 사용자 검색

API를 사용하여 커스텀 필드 값에 기반한 사용자 검색이 가능합니다:

  1. 커스텀 필드 설정에서 “searchable” 옵션이 체크되어 있는지 확인합니다.
  2. 쿼리 매개변수와 함께 /directory_items.json 엔드포인트를 사용합니다.

다음은 API 호출 예시입니다:

https://yourdomain.com/directory_items.json?period=weekly&order=likes_received&name=SearchTerm&user_field_ids=1|2
  • user_field_ids: 검색할 커스텀 필드를 지정합니다 (예: 커스텀 필드 ID 5에서만 검색하려면 user_field_ids=5).
  • name: 커스텀 필드, 사용자 이름, 그리고 가능한 경우 전체 이름에서 찾을 검색어입니다.

참고: 이 검색은 커스텀 필드에 한정되지 않으며, 사용자 이름 또는 전체 이름 일치에 기반한 결과도 반환될 수 있습니다.

사용 가능한 매개변수에 대한 자세한 내용은 API 문서를 참고하세요.

추가 자료

7개의 좋아요

정말 좋습니다, 감사합니다! API를 통해 사용자 정의 필드의 값으로 사용자를 검색하는 방법이 있을까요?

1개의 좋아요

네, 쿼리 매개변수를 사용하면 됩니다:

예를 들어,
https://unicyclist.com/directory_items.json?period=weekly&order=likes_received&name=Flansberrium+G29&user_field_ids=1|2

마지막 매개변수인 user_field_ids=1|2를 수정하여 검색할 사용자 사용자 정의 필드를 제한할 수 있습니다.
예를 들어, user_field_ids=5로 설정하면 사용자 정의 필드 ID 5에서만 검색합니다.

API 문서에서 찾을 수 있는 다른 몇 가지 사용 가능한 매개변수도 있습니다(사용자 필드에 대한 언급은 없지만, API를 역공학하는 것도 어렵지 않습니다).

쿼리가 작동하려면 사용자 정의 필드에 검색 가능 옵션이 체크되어 있어야 합니다:

또한 쿼리는 사용자 정의 필드 만 검색하는 것이 아니라 사용자 이름과 아마도 전체 이름도 함께 검색한다는 점에 유의하세요. 사용자 정의 필드만으로만 필터링하는 내장 기능은 없는 것 같습니다.

3개의 좋아요