모더레이터로서 디스커스 포럼에 대해 API를 사용해보고 싶습니다. 보통 활성화되어 있었고 API 키를 얻는 데 성공했습니다. 다음 스크립트를 사용했습니다:
32자 길이의 키를 가져오는 데 성공했는데(이게 맞는 건가요?), 그리고 내 계정의 보안 설정에서 해당 앱은 다음 권한으로 표시됩니다:
Read all Write all Live updates Push notifications to external services Read and clear notifications Read user session info Create a one-time login token
그렇게 보이면 꽤 괜찮아 보입니다. 하지만 다음 스크립트로 접근을 시도할 때:
from pydiscourse import DiscourseClient
client = DiscourseClient(
'https://forum.example.com',
api_username='tflidd',
api_key='388b79103056fede1d3223dae032df99')
client.user("tflidd")
Python 라이브러리이므로 작동할 것으로 생각됩니다. api_key는 이 특정 형식을 가지고 있으며, 실제 키가 아닙니다. 사용자 이름 또는 API 키가 유효하지 않다는 오류가 발생합니다.
사용자 이름을 사용해야 하는지, 아니면 앱 이름을 사용해야 하는가요?
API 키는 적어도 형식적으로는 올바른가요, 아니면 복호화 과정에서 문제가 생긴 건가요?
여기서처럼 curl을 사용했을 때:
curl https://forum.example.com/t/95783.json\ -H 'Api-Key: 388b79103056fede1d3223dae032df99'\ -H 'Api-Username: tflidd'
또는 다음 오류가 발생합니다:
{"errors":["You are not permitted to view the requested resource. The API username or key is invalid."],"error_type":"invalid_access"}
웹 브라우저에 로그인된 상태에서 동일한 URL의 json을 브라우저로 열면 브라우저에 올바른 json 객체가 표시됩니다. 즉, 해당 토픽이 존재하며 접근 권한이 있다는 뜻입니다(심지어 공개 토픽이었습니다).
저는 모더레이터일 뿐이며 직접적인 관리자 접근 권한은 없습니다. 무엇을 찾아봐야 할지 방향을 제시해 주신다면 로그에서 더 많은 정보를 요청할 수 있습니다.
관련이 된다면, 설치된 버전은 3.2.0.beta4-dev입니다.