Ich hoffe, ich kann klären, wann und zu welchen Zwecken die beiden Discourse-API-Authentifizierungssysteme funktionieren.
(aus hier). Dies ist mein bestes Verständnis:
Die Admin-API, manchmal auch als JSON-API bezeichnet, kann verwendet werden, wenn Sie API-Aufrufe tätigen möchten, um mit einem Discourse-Forum zu interagieren und entweder:
- diese Aufrufe keine Authentifizierung erfordern, oder
- diese Aufrufe eine Authentifizierung erfordern, Sie aber auch direkte Kontrolle über das Discourse-Forum haben, sodass Sie manuell API-Schlüssel generieren können, die Ihr Forum und/oder die separate App zur Durchführung der API-Aufrufe verwenden können.
Die User-API hingegen ist dafür gedacht, wenn Sie mit einem Discourse-Forum (oder mehreren Foren) interagieren möchten, die Interaktionen eine Authentifizierung erfordern und Sie das Forum (oder die Foren), mit denen Sie interagieren möchten, nicht kontrollieren.
Eine andere Art, es auszudrücken: Die Admin-API ist für den Fall, dass Sie das Forum kontrollieren, mit dem Sie interagieren, und die User-API für den Fall, dass Sie das Forum nicht kontrollieren.
Ist das korrekt?
Zum Beispiel besagt @davids Beschreibung hier, dass die Admin-API nicht für JavaScript-Clients gedacht ist. Ich bin jedoch der Meinung, dass es in Ordnung ist, die Admin-API mit JavaScript-Clients zu verwenden, solange der Eigentümer der App, die die JavaScript-Clients verwenden, auch das Forum kontrolliert. (Das heißt, der Eigentümer der separaten App ist derselbe wie der Eigentümer des Forums.) Richtig?
Ich würde denken, dass es so funktioniert. Wenn Sie Aufrufe an die Admin-API bezüglich einer Discourse-Seite von einer separaten App aus tätigen möchten, können Sie diese Aufrufe meiner Meinung nach serverseitig (von einem Backend aus) tätigen. Wenn Sie sie nicht von einem Backend aus tätigen – sondern von der Clientseite aus –, können Sie auf CORS-Einschränkungen stoßen. In diesem Fall können Sie die Domain der separaten App unter admin/site_settings/security/ → „cors origins