Hallo Discourse Community,
Ich habe derzeit Probleme mit den Discourse API-Endpunkten, insbesondere im Zusammenhang mit der Suspendierung von Benutzern, und würde mich sehr über jede Hilfe oder Anleitung freuen, die Sie anbieten können.
Zusammenfassung der Probleme
-
404 Nicht gefunden:
- Wenn ich den Endpunkt
/admin/users/15/suspend.jsonverwende, erhalte ich durchweg die Fehlermeldung “Seite nicht gefunden”, obwohl der Benutzer existiert. - Ich habe auch den alternativen Endpunkt
/admin/u/15/suspend.jsonausprobiert, was zum gleichen Problem führt.
- Wenn ich den Endpunkt
-
Unerwartete HTML-Antwort:
- Anstatt die erwartete JSON-Antwort zurückzugeben, gibt die API eine HTML-Seite mit der Meldung zurück: “Ups! Diese Seite existiert nicht oder ist privat.”
- Dies geschieht unabhängig davon, ob ich
curloder PowerShell für die Anfrage verwende.
-
API-Schlüssel und Berechtigungen:
- Der verwendete API-Schlüssel hat vollen Admin-Zugriff, dennoch geben die Anfragen weiterhin einen
404-Fehler zurück. - Ich habe auch getestet, indem ich granulare Schlüssel (beschränkt auf Suspendierungsaktionen) und einen schreibgeschützten Schlüssel verwendet habe, aber das Problem bleibt bestehen.
- Interessanterweise funktioniert der Endpunkt einwandfrei, wenn er über einen Browser aufgerufen wird, schlägt aber bei API-Anfragen mit dem Schlüssel fehl.
- Der verwendete API-Schlüssel hat vollen Admin-Zugriff, dennoch geben die Anfragen weiterhin einen
Beispielanfragen
curl-Beispiel
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": "Verstoß gegen Community-Richtlinien"}'
PowerShell-Beispiel
# PowerShell-Skript zum Suspendieren eines Benutzers in Discourse
$baseUrl = "https://your-discourse-domain.com"
$userId = 15
$apiKey = "[REDACTED_API_KEY]"
$apiUsername = "system"
$suspendUntil = "2024-12-31"
$reason = "Verstoß gegen Community-Richtlinien"
$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 "Benutzer erfolgreich suspendiert!" -ForegroundColor Green
} catch {
Write-Host "Fehler beim Suspendieren des Benutzers:" -ForegroundColor Red
Write-Host $_.Exception.Message
}
Zusätzliche Details
- Discourse-Version: 3.4.0.beta3
- Durchgeführte Fehlerbehebungsschritte:
Ich habe versucht, die Anfrage-Header anzupassen, einschließlichUser-AgentundReferer, aber ohne Erfolg.
Jede Einsicht oder jeder Vorschlag zur Lösung dieser Probleme wäre sehr willkommen. Vielen Dank im Voraus für Ihre Zeit und Unterstützung!
Mit freundlichen Grüßen,
Ross