User API keys specification

오픈 리다이렉트는 일반적으로 사람들에게 불안감을 줍니다. 예를 들어 nextcloud를 추가하는 경우, 사용자가 nextcloud의 URL을 통해 discourse에서 키를 생성한 뒤 다시 nextcloud로 리다이렉트할 수 있게 됩니다.

3개의 좋아요

6단계에서 구체적으로 어떤 API 호출을 말씀하시는 건가요?
혹시 다른 분이 아시면 답변 부탁드립니다!

6단계에서 언급된 API 호출은 사용자가 원하는 어떤 호출이든 될 수 있습니다. 이는 실제로 Discourse 사이트에서 수행하려는 작업을 실행하는 호출들을 가리킵니다.

제 경우, Discourse 사이트와 상호작용하는 별도의 애플리케이션을 가지고 있었습니다. 이 애플리케이션은 사용자가 별도의 애플리케이션에서 수행하는 동작에 기반하여 Discourse 사이트에 게시물을 생성하는 등의 작업을 수행했습니다. 애플리케이션은 사용자를 로그인시키고, 사용자가 몇 가지 작업을 수행한 후, 해당 사용자가 Discourse 게시물을 생성/편집하기 위해 POST 및 PUT API 호출을 실행했습니다.

네, 알겠습니다. 제 경우에는 사용자가 제 웹사이트에 로그인한 후 Discourse 인증을 거치고, 다시 제 웹사이트로 리다이렉트되면, 제 웹사이트에서 해당 사용자의 사용자 이름, 이메일, 아바타, ID 등을 읽고 제 사이트에서 새 사용자를 생성하는 방식으로 하고 싶습니다. @JQ331

그렇다면 잘못된 곳에 계신 겁니다. User API 키로는 이 작업을 수행할 수 없습니다.

대신, Discourse를 DiscourseConnect 제공자(Provider)로, 그리고 웹사이트를 DiscourseConnect 클라이언트로 설정해야 합니다. Use Discourse as an identity provider (SSO, DiscourseConnect) 를 참고하세요.

1개의 좋아요

이런 일을 하려면 사이트의 시크릿 키에 대한 접근 권한이 필요하다는 말, 맞죠?

“the” secret key이라는 것은 존재하지 않지만, 이를 구성하려면 Discourse에 대한 관리자 접근 권한이 필요합니다.

안녕하세요, 이 사용자 API 키를 구현해 보았는데, API 속도 제한이 있는 것 같습니다. 몇 번의 API 호출 후 429 오류가 발생했습니다. 이 설정을 변경할 수 있는 방법이 있을까요? 유료 호스팅을 사용하고 있습니다.

여기에서 레이트 리미트에 대한 자세한 정보를 확인할 수 있습니다.

Communiteq를 통해 호스팅을 하고 계신 경우, 컨트롤 패널을 통해 지원 데스크에 문의하여 해당 설정을 완료해 주세요.

안녕하세요 @RGJ, 답변 감사합니다. 저희 회사에는 Standard 플랜과 Business 플랜이 있지만, 제어판에서 지원 데스크를 찾을 수 없습니다. 대신 team@discourse.org로 이메일을 보냈는데, 이것이 올바른 방법인가요?

1개의 좋아요

Discourse에서 호스팅을 이용하고 계신 경우(Communiteq의 @RGJ가 아닌)에 한해, 이것이 지원팀에 연락하는 올바른 방법입니다. :+1: :slightly_smiling_face:

1개의 좋아요

안녕하세요!
이 API를 사용하는 애플리케이션을 작성하고 있습니다.
이 API를 통해 사용자 정보(주로 사용자 이름)를 가져올 수 있는 방법이 있을까요?
아니면 사용자 이름을 수동으로 입력받은 후에 나중에 요청해야 하나요?

@gilice, 환영합니다.

API를 호출해서 API 키를 가져오는 것이 아니라, 유저와 관련된 무언가를 하려는 건가요?

Discourse API 역공학이 도움이 될 수 있습니다.

하지만 유저의 사용자명을 가져오려는 것이라면, 관리자 페이지의 users 경로에서 이메일 주소를 검색하는 방법이 있습니다.

무엇을 하려는 건지 말씀해 주시면 더 도움이 될 수 있을 것 같습니다.

안녕하세요! 답변 주셔서 감사합니다. 표현을 더 명확히 했어야 했는데 죄송합니다.
질문드리고 싶은 것은 이겁니다: 특정 사용자의 API 키를 가져올 수 있습니다. 그렇다면 해당 사용자의 프로필(사용자 이름, 프로필 사진 등)을 사용자 이름을 별도로 요청하지 않고 getUser 메서드로 가져올 수 있나요?

이것이 어떻게 작동하는지 명확하지 않습니다. API 키를 어디에서 가져오시려는 건가요? 플로우를 보시면 알 수 있듯이, 사용자는 먼저 키를 얻기 위해 로그인해야 하며, 이를 위해 일반적인 로그인 정보가 필요합니다. 구체적으로 무엇을 하려는 건지 더 설명해 주실 수 있을까요?

1개의 좋아요

모두 안녕하세요,

제 애플리케이션에서는 일부 Discourse 기능을 구현하기 위해 사용자 API 키를 사용하고 있습니다. 실수로 잘못된 Discourse 계정으로 로그인 인가( /user-api-key/new API 사용)를 수행했습니다.

잘못된 Discourse 계정에서 앱에 대한 액세스 권한을 취소했습니다. 그러나 올바른 Discourse 계정으로 인가를 시도하면 오류가 발생합니다. 로그를 확인해 보니 다음과 같은 오류가 확인되었습니다.

ActiveRecord::RecordNotUnique (PG::UniqueViolation: ERROR: duplicate key value violates unique constraint “index_user_api_keys_on_client_id” DETAIL: Key (client_id)=

이 오류를 바탕으로, 동일한 client_id에 두 개의 사용자 계정을 연결할 수 없다고 추측하고 있습니다.

이 문제를 해결할 방법이 있을까요?

또한, API 키가 폐기된 상태에서도 사용자 API 키의 client_id를 업데이트할 수 있는 API가 있나요?

감사합니다!

1개의 좋아요

이것이 정확히 무슨 의미인가요?

저는 사용자 API 키를 통해 사용자를 대신하여 데이터를 요청하는 애플리케이션을 작성하고 있습니다. 목표는 속도 제한(rate limiting) 문제를 피하는 것입니다. 정확히 어떤 경우에 애플리케이션이 속도 제한 문제에 직면하게 되나요?

아래와 같은 것을 찾고 계신 것 같습니다:

3개의 좋아요

네! 바로 제가 원했던 거예요. 정말 감사합니다!!!

2개의 좋아요

User API 키에 대한 OpenAPI 스펙을 받을 수 있을까요? 아니면 기존 스펙 문서에 추가하는 것도 고려해 주세요.

GitHub - discourse/discourse_api_docs: Discourse API Documentation · GitHub

다운스트림 개발자로서, 필요한 인터페이스와 API를 생성하기 위해 OpenAPI를 사용하는 것을 선호합니다.