Benutzer-API-Schlüssel Spezifikation

Open Redirects machen die Leute nervös. In diesem Fall bedeutet die Hinzufügung von Nextcloud, dass Benutzer eine URL auf Nextcloud verwenden können, um einen Schlüssel in Discourse zu generieren und dann zu Nextcloud zurückzuleiten.

3 „Gefällt mir“

Bei Schritt 6, auf welchen API-Aufruf beziehen Sie sich speziell?
Oder falls sonst jemand Bescheid weiß, bitte antworten Sie!

Die in Schritt sechs erwähnten API-Aufrufe sind beliebige Aufrufe, die Sie tätigen möchten. Sie beziehen sich lediglich auf die Aufrufe, die die Aktion ausführen, die Sie tatsächlich mit der Discourse-Site durchführen möchten.

In meinem Fall hatte ich eine separate Anwendung, die mit einer Discourse-Site interagierte – sie führte Dinge aus, wie z. B. das Erstellen von Beiträgen auf der Discourse-Site basierend auf einer Aktion, die ein Benutzer in der separaten Anwendung ausführte. Die Anwendung meldete den Benutzer an, der Benutzer tat einige Dinge, und dann führte die Anwendung POST- und PUT-API-Aufrufe aus, um Discourse-Beiträge von diesem Benutzer zu erstellen/bearbeiten.

Ich verstehe. In meinem Fall möchte ich nur, dass sich ein Benutzer auf meiner Website anmeldet, die Discourse-Autorisierung durchführt, dann zurückgeleitet wird und meine Website dann einfach seinen Benutzernamen, seine E-Mail-Adresse, seinen Avatar, seine ID usw. lesen und einen neuen Benutzer auf unserer Website erstellen kann. @JQ331

Dann sind Sie hier falsch, Sie können die User API-Schlüssel dafür nicht verwenden. Stattdessen müssen Sie Discourse als DiscourseConnect-Anbieter und Ihre Website als DiscourseConnect-Client konfigurieren. Siehe Use Discourse as an identity provider (SSO, DiscourseConnect)

1 „Gefällt mir“

Habe ich Recht, wenn ich sage, dass ich für so etwas Zugriff auf den geheimen Schlüssel der Website benötige?

Es gibt keinen „den“ geheimen Schlüssel, aber Sie benötigen in der Tat Administratorzugriff auf Discourse, um dies zu konfigurieren.

Hallo, ich habe versucht, diesen Benutzer-API-Schlüssel zu implementieren, aber es scheint, dass er einen API-Ratenbegrenzer hat. Nach ein paar API-Aufrufen erhielt ich eine 429. Gibt es eine Konfiguration dafür? Ich nutze kostenpflichtiges Hosting.

Hier finden Sie weitere Informationen zu Ratenbegrenzungen.

Wenn Sie mit Communiteq hosten, wenden Sie sich bitte über Ihr Control Panel an unseren Support, um dies einzurichten.

Hallo @RGJ , danke für die Antwort. Mein Unternehmen hat den Standard- und Business-Plan, aber ich kann das Support-Desk nicht im Control Panel sehen. Stattdessen habe ich eine E-Mail an team@discourse.org gesendet, ist das richtig?

1 „Gefällt mir“

Wenn Sie bei uns bei Discourse gehostet werden (und nicht bei @RGJ bei Communiteq), ist dies tatsächlich der richtige Weg, um mit unserem Support-Team in Kontakt zu treten. :+1: :slightly_smiling_face:

1 „Gefällt mir“

Hallo!
Ich schreibe eine Anwendung, die diese API nutzt.
Gibt es eine Möglichkeit, die Benutzerinformationen (hauptsächlich den Benutzernamen) daraus zu erhalten?
Oder muss ich den Benutzernamen manuell abfragen und ihn später anfordern?

Willkommen, @gilice.

Sie meinen nicht, dass Sie die API konsumieren, um API-Schlüssel zu erhalten, sondern dass Sie etwas mit Benutzern tun möchten?

Dies könnte helfen: Reverse-Engineering der Discourse-API.

Wenn Sie jedoch versuchen, den Benutzernamen eines Benutzers zu erhalten, können Sie dies tun, indem Sie die E-Mail-Adresse auf der Route admin/users durchsuchen.

Es wäre hilfreich, wenn Sie sagen würden, was Sie zu tun versuchen.

Hallo! Danke für die Antwort, ich hätte es vielleicht besser formulieren sollen.
Die Frage, die ich stellen wollte: Ich kann den API-Schlüssel eines Benutzers erhalten. Kann ich dann das Profil des Benutzers (Benutzername, Profilbild usw.) abrufen, ohne nach seinem Benutzernamen zu fragen und die getUser-Methode zu verwenden?

Mir ist nicht klar, wie das funktionieren würde. Woher möchten Sie den API-Schlüssel bekommen? Wie Sie im Ablauf sehen können, muss sich der Benutzer anmelden, um überhaupt einen Schlüssel zu erhalten, und dafür benötigt er seine normalen Anmeldeinformationen. Können Sie genauer erklären, was Sie zu tun versuchen?

1 „Gefällt mir“

Hallo zusammen,
in meiner Anwendung verwende ich Benutzer-API-Schlüssel, um einige der Discourse-Funktionalitäten zu nutzen. Ich habe versehentlich die Anmeldung (über die /user-api-key/new API) mit dem falschen Discourse-Konto autorisiert.

Ich habe den Zugriff auf die App von dem falschen Discourse-Konto widerrufen. Wenn ich jedoch versuche, mich mit dem richtigen Discourse-Konto zu autorisieren, erhalte ich eine Fehlermeldung. Als ich in die Protokolle schaute, fand ich den folgenden Fehler:

\u003e ActiveRecord::RecordNotUnique (PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "index_user_api_keys_on_client_id" DETAIL: Key (client_id)=\n\nBasierend auf dem Fehler gehe ich davon aus, dass wir nicht 2 Benutzerkonten für dieselbe client_id zuordnen konnten.

Gibt es eine Möglichkeit, dieses Problem zu lösen?

Gibt es auch eine API, um die client_id eines Benutzer-API-Schlüssels zu aktualisieren, auch wenn der API-Schlüssel widerrufen wurde?

Danke!

1 „Gefällt mir“

Was genau bedeutet das?

Ich schreibe eine Anwendung, die Daten im Namen eines Benutzers über einen Benutzer-API-Schlüssel anfordert. Ziel ist es, Probleme mit der Ratenbegrenzung zu vermeiden. Wann genau läuft die App in Ratenbegrenzungsprobleme?

Ich glaube, Sie suchen nach etwas wie diesem:

3 „Gefällt mir“

Ja! Das ist es, was ich wollte. Vielen Dank!!!

2 „Gefällt mir“

Können wir eine OpenAPI-Spezifikation für die User API-Schlüssel erhalten? Oder erwägen Sie, sie zu den vorhandenen Spezifikationsdokumenten hinzuzufügen.

GitHub - discourse/discourse_api_docs: Discourse API Documentation

Für nachgelagerte Entwickler ziehen wir es vor, OpenAPI zur Generierung der benötigten Schnittstelle und API zu verwenden.