'/admin/users/{id}/log_out.json' funktioniert nicht

Ich versuche, einen Beispielcode für das Ausloggen zu erstellen.

Die DNS meiner Website ist ‘aaa.com’ und die Benutzer-ID ist ‘1’.
Ich habe die URL erstellt und die Anfrage wie folgt gesendet:
-post AAA Sorry Page
Außerdem habe ich den Header mit api-key und api-Username gesendet.
Aber ich habe die Antwort erhalten: “Oops! That page doesn’t exist or is private.”

Ich versuche es mit ‘CURL’ wie folgt.
Aber ich habe das gleiche Ergebnis erhalten. (Oops! That page doesn’t exist or is private~~~ )

curl -X POST " AAA Sorry Page "
-H “Content-Type: multipart/form-data;”
-H “Api-Key: secretStringTemp”
-H “Api-Username: system”
-F “id=1” \

Können Sie mir helfen, was ich falsch mache?

Hallo,
Gleiches Problem hier. Haben Sie damit Fortschritte gemacht?
Viele Grüße

1 „Gefällt mir“

Ich kann Benutzer immer noch über die API abmelden. Hier ist der von mir verwendete Curl-Befehl:

curl -i -sS -X POST "http://localhost:4200/admin/users/1/log_out.json"  \
-H "Content-Type: multipart/form-data"  \
-H "Api-Key: 64b901d2357526d1b6e8c439fd0570f9c585073e6160ae18cc82b7ac358d4893"  \
-H "Api-Username: blake.erickson" 

HTTP/1.1 200 OK

{"success":"OK"}

Wenn Sie immer noch Probleme haben, können Sie uns weitere Informationen zu Ihrer API-Anfrage mitteilen?

1 „Gefällt mir“

Ich bin ratlos!

Ich kann einen Benutzer nicht über den API-Endpunkt /admin/users/{USER_ID}/log_out.json abmelden.

Ich rufe den Discourse USER_ID erfolgreich mit Folgendem ab: /u/by-external/${user.id}.json.

Ich rufe auch Daten ab, indem ich andere API-Endpunkte aufrufe, daher bin ich mit dem API-Schlüssel und der Mechanik meiner Anfrage zufrieden.

Aber wenn ich versuche, eine POST-Anfrage zu senden…

await axios.post(`${process.env.FORUM_URL}/admin/users/${UserID}/log_out.json`,{
  headers: {
    'Api-Key': process.env.DISCOURSE_API_KEY,
    'Api-Username': process.env.DISCOURSE_API_USERNAME,
  },
});

…erhalte ich den Status 404 mit dem folgenden Rückgabeobjekt:

{
  errors: [ 'The requested URL or resource could not be found.' ],
  error_type: 'not_found'
}

Ich konnte SSO ohne große Probleme implementieren. Jede Einsicht, warum die Abmeldung möglicherweise nicht funktioniert, wäre großartig.

Prost.

Das sieht auf den ersten Blick für mich in Ordnung aus :thinking: . Hat UserID einen korrekten Wert?

Ja, im Testfall ist es 1 (erhalten aus einem Aufruf von /u/by-external/${user.id}.json). Habe auch versucht, den Wert fest zu codieren, nur um ihn noch einmal zu überprüfen… dasselbe Ergebnis.

Ich habe die Beiträge aus dem anderen Thema hierher verschoben, um die Diskussion zusammenzufassen. :+1:

Entschuldigung, wenn es ein wenig aus dem Takt geraten ist. :slight_smile:

3 „Gefällt mir“

Eine Möglichkeit, die 404-Fehlermeldung zu reproduzieren, besteht darin, eine ungültige Benutzer-ID zu verwenden. Können Sie zuerst überprüfen, ob Sie den Benutzer anhand der ID abrufen können?

curl -i -sSL -X GET "http://localhost:4200/admin/users/1.json" \
-H "Api-Key: 64b901d2357526d1b6e8c439fd0570f9c585073e6160ae18cc82b7ac358d4893"  \
-H "Api-Username: blake.erickson"

HTTP/1.1 200 OK

{
  "id": 1,
  "username": "blake.erickson",
...
1 „Gefällt mir“

Ok, ich habe bestätigt, dass ich eine gültige user_id von Discourse abrufe, in diesem Fall 1…

{
  "id":1,
  "username":"Sean",
...
}

Interessanterweise, wenn ich eine cURL-Anfrage an den log_out-Endpunkt für Benutzer-ID 1 sende…

curl -i -sS -X POST https://community.site.com/admin/users/1/log_out.json
-H "Content-Type: multipart/form-data" 
-H "Api-Key: my-api-key" 
-H "Api-Username: Sean" 

…erhalte ich eine 200-Antwort, was darauf hindeutet, dass Benutzer 1 (ich) aus dem Forum abgemeldet werden sollte, aber als ich nachsehe, wurde ich nicht tatsächlich abgemeldet – das ist Problem eins.

Das zweite Problem ist, dass die gleiche Anfrage von meinem App-Backend mit axios (oben detailliert) zu einem 404 führt… sehr seltsam.

Bearbeitet:
Problem eins ist kein Problem – die cURL-Anfrage meldet mich erfolgreich ab – jetzt muss ich nur noch herausfinden, warum die axios POST-Anfrage mir einen 404 gibt.

1 „Gefällt mir“

Ok - Rätsel gelöst :roll_eyes:

Es stellte sich heraus, dass meine Axios-Anfrage nicht richtig formatiert war! Da ich keinen Body in der POST-Anfrage sende, hätte ich ein leeres Objekt mit der Anfrage übergeben sollen.

Danke für den Hinweis bezüglich der cURL-Anfragen @blake - das hat es mir letztendlich ermöglicht, das Problem zu lösen. :+1:

3 „Gefällt mir“

Hallo Sean,

Können Sie bitte den Code für log_out.json teilen, da ich an einer ähnlichen Anfrage arbeite?

Ich habe versucht, mich mit der Post-API ‘admin/users/{user_id}/log_out.json’ aus dem Forum abzumelden, aber es wird mit Oops! Diese Seite existiert nicht oder ist privat angezeigt.
Ich habe api_key und api-username in den Headern angegeben. Ist jemandem dasselbe Problem begegnet?

Benötigen Sie einen Admin-API-Schlüssel für diesen Endpunkt?

1 „Gefällt mir“

Ich habe mich erfolgreich über die API abgemeldet, indem ich eine POST-Anfrage an /admin/users/1/log_out.json gesendet habe.

Leerer Body, Header mit einem Admin Api-Username und einem Api-Key mit globalem Geltungsbereich oder granularer Geltungsbereich mit aktivierter Abmeldefunktion.

1 „Gefällt mir“

Ja, ich habe den Admin-API-Schlüssel verwendet

Mit welcher Software oder welcher Programmiersprache haben Sie den API-Aufruf getätigt? Können Sie Ihren Code hier einfügen?