Discourse 커뮤니티 여러분,
현재 Discourse API 엔드포인트, 특히 사용자 정지(suspend) 관련 문제로 어려움을 겪고 있어 도움을 요청드립니다. 조언이나 해결책을 주시면 감사하겠습니다.
문제 요약
-
404 Not Found:
- 다음 엔드포인트를 사용할 때:
/admin/users/15/suspend.json, 사용자가 존재함에도 불구하고 일관되게 “페이지를 찾을 수 없음” 오류가 발생합니다. - 대안 엔드포인트인
/admin/u/15/suspend.json도 시도해 보았으나 동일한 문제가 발생합니다.
- 다음 엔드포인트를 사용할 때:
-
예상치 못한 HTML 응답:
- 기대했던 JSON 응답 대신 "Oops! That page doesn’t exist or is private."라는 메시지가 포함된 HTML 페이지가 반환됩니다.
- 요청에
curl을 사용하든 PowerShell을 사용하든 관계없이 이 문제가 발생합니다.
-
API 키 및 권한:
- 사용하는 API 키는 전체 관리자 권한이 있음에도 불구하고 요청은 계속
404오류를 반환합니다. - 정지 작업으로 제한된 세분화된 키(granular keys)와 읽기 전용 키도 테스트해 보았으나 문제가 지속됩니다.
- 흥미롭게도 브라우저로 해당 엔드포인트에 액세스하면 완벽하게 작동하지만, API 키를 사용하여 API 요청을 보낼 때는 실패합니다.
- 사용하는 API 키는 전체 관리자 권한이 있음에도 불구하고 요청은 계속
요청 예시
curl 예시
curl -X PUT "https://your-discourse-domain.com/admin/users/15/suspend.json" \
-H "Api-Key: [REDACTED_API_KEY]" \
-H "Api-Username: system" \
-H "Content-Type: application/json" \
-d '{"suspend_until": "2024-12-31", "reason": "Violation of community guidelines"}'
PowerShell 예시
# Discourse에서 사용자를 정지하는 PowerShell 스크립트
$baseUrl = "https://your-discourse-domain.com"
$userId = 15
$apiKey = "[REDACTED_API_KEY]"
$apiUsername = "system"
$suspendUntil = "2024-12-31"
$reason = "Violation of community guidelines"
$headers = @{
"Api-Key" = $apiKey
"Api-Username" = $apiUsername
"Content-Type" = "application/json"
}
$body = @{
suspend_until = $suspendUntil
reason = $reason
} | ConvertTo-Json
$endpoint = "$baseUrl/admin/users/$userId/suspend.json"
try {
$response = Invoke-RestMethod -Uri $endpoint -Method Put -Headers $headers -Body $body -ErrorAction Stop
Write-Host "User suspended successfully!" -ForegroundColor Green
} catch {
Write-Host "Error suspending user:" -ForegroundColor Red
Write-Host $_.Exception.Message
}
추가 정보
- Discourse 버전: 3.4.0.beta3
- 실시한 문제 해결 단계:
User-Agent및Referer를 포함하여 요청 헤더를 조정해 보았으나 효과가 없었습니다.
이 문제들을 해결하는 데 도움이 될 통찰력이나 제안이 있다면 매우 감사하겠습니다. 시간 내어 도와주셔서 미리 감사합니다!
감사합니다,
Ross