„Single User“ 수준 API 키를 생성할 수 없으며, 항상 „All Users“로 설정됩니다

재현 단계:

  1. https://yourdiscoursedomain.com/admin/api/keys를 열기
  2. 새 키 선택
  3. 사용자 수준으로 “단일 사용자” 선택
  4. 키 생성
  5. 생성 후 키 상세 정보 열기
  6. 사용자 수준이 "모든 사용자"로 표시됨

두 사용자 수준 옵션의 차이가 무엇인지 매우 불분명하지만, 이는 명백한 버그로 보입니다.

(호스팅된 디스커스 서비스를 사용 중입니다)

API 키를 생성할 사용자를 선택하셨나요?

대부분의 경우 “모든 사용자(all-user)” API 키가 필요합니다. 다만 discourse_theme 사용 등 일부 작업에는 사용자 키가 필요합니다.

API로 무엇을 하려 하시는 건가요?

1개의 좋아요

나열된 단계를 따르면 문제를 재현할 수 있습니다. 단일 사용자를 위한 API 키를 생성할 때 Discourse는 양식의 User 필드에 사용자 이름이 추가되기를 기대합니다:

User Level에서 'Single User’가 선택되었지만 User 필드에 사용자 이름이 추가되지 않으면 All Users API 키가 생성됩니다. 설명 없이 양식을 제출할 때 발생하는 것과 유사하게, 대신 오류 메시지가 표시되어야 한다고 생각합니다.

3개의 좋아요

특정 카테고리의 게시글을 가져오기 위한 일종의 “봇” 사용자를 만들고 싶었습니다. 이 Discourse 인스턴스는 GSuite 인증만 지원하기 때문에 임의의 사용자를 생성할 방법이 없습니다. “Single User” 키의 경우, 새 사용자 이름(예: bot)을 입력할 수 있을 것으로 기대했지만, 사용자 이름은 기존에 존재하는 사용자여야 한다는 것을 이제야 알게 되었습니다. 사용자 이름 입력 필드에 검증 기능이 없어서, 아무 이름이나 입력할 수 있는지(예: Slack incoming webhooks의 경우처럼) 명확하지 않았습니다. 제출 시 입력한 사용자 이름을 조회하는 과정에서 조용히 실패하며, 대신 “All Users” 키가 생성되었습니다.

기능적 오류보다는 사용성 버그에 가깝다고 생각합니다. 여기 있는 문서는 User Level 필드에 대해 전혀 설명하지 않아 혼란스러웠고, 스레드 하단 댓글 한 곳에서 “All Users” 유형이 언급되었을 뿐 그 외에는 언급이 없었습니다.

“봇”이 일부 카테고리를 읽지 못하도록 하려는 것이 아니라면, 모든 사용자를 위한 API 키를 사용하는 것이 좋습니다.

이것이 사용자 이름 선택기 컴포넌트인가요 @j.jaffeux?

아니요, 이것은 select-kit 컴포넌트가 아닙니다. 문제는 username이 있는지 여부가 아니라 description이 존재하는지만 확인하고 있다는 점입니다. userMode(단일/전체)는 클라이언트 측 값일 뿐이므로, 모델이 서버 측에서 검증될 때 서버가 알 수 있는 것은 우리가 키를 요청했고, 사용자를 제공했거나 하지 않았다는 사실뿐입니다.

이것이 더 나아질 것입니다. david에게 리뷰를 요청하겠습니다:

7개의 좋아요