So rufen Sie den Wert von user_api_keys über die API ab

Hallo @simon, danke für deine Antwort. Lass mich unseren Fall genauer erläutern.

Wir entwickeln eine mobile App, die auf Backend-Logik von Discourse-Endpunkten angewiesen ist. Wenn sich ein Benutzer über die App anmeldet, werden die Anmeldedaten über session.json an die Discourse-API gesendet, die einen Cookie zurückgibt. Dieser Cookie wird dann verwendet, um die Webview zu /user-api-key/new umzuleiten, wodurch der Benutzer aufgefordert wird, die Autorisierung zu genehmigen. Nach der Genehmigung wird die Nutzlast in API-Schlüssel entschlüsselt.

In diesem Fall können wir die API-Schlüssel als globalen Token innerhalb der mobilen App verwenden, um auf andere Discourse-Endpunkte zuzugreifen. Wenn sich der Benutzer jedoch abmeldet, sollte der Token aus dem globalen Zustand entfernt werden, damit er nicht auf Endpunkte wie das Erstellen eines neuen Themas zugreifen kann.

Meine Frage bezieht sich auf dieses Thema: Wie können wir überprüfen, ob ein Benutzer bereits user_api_keys hat und ob diese noch aktiv sind? Wenn die Schlüssel vorhanden und aktiv sind, sollte der Benutzer sie nach der Anmeldung verwenden können. Andernfalls muss der Benutzer neue user_api_keys erstellen, was eine Genehmigung in der Webview erfordert.

Dies ist das Hauptproblem, mit dem ich konfrontiert bin.

Eine weitere Lösung, die ich in Betracht gezogen habe, basierend auf einem Beitrag von How to Retrieve User API Keys Value via API, ist die Speicherung der API-Schlüssel in der Datenbank unserer mobilen App.

Ich habe auch den Beitrag Generate User API Key Without User Approval - #2 von simon konsultiert, den ich ursprünglich für die Implementierung von API-Schlüsseln angesehen hatte. Das Problem bleibt jedoch dasselbe: Wenn wir /admin/api/keys überprüfen, können wir den Wert der bereits in der Datenbank gespeicherten API-Schlüssel nicht abrufen oder API-Schlüssel pro Benutzer erhalten. Ich glaube, für diese Implementierung müssten wir die API-Schlüssel in unserer eigenen Datenbank speichern.