'/admin/users/{id}/log_out.json' non funziona

Sto cercando di creare un codice di esempio per il logout.

Il DNS del mio sito è ‘aaa.com’ e l’ID utente è ‘1’.
Ho creato l’URL e inviato la richiesta in questo modo.
-post AAA Sorry Page
Inoltre, ho inviato l’header con api-key, api-Username.
Ma ho ricevuto la risposta “Oops! That page doesn’t exist or is private.”

Sto provando con ‘CURL’, in questo modo.
Ma ho ottenuto lo stesso risultato. (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” \

Potreste aiutarmi a capire cosa sto sbagliando?

Ehi,
Stesso problema qui. Sei riuscito a risolvere qualcosa?
Saluti

1 Mi Piace

Sono ancora in grado di disconnettere gli utenti tramite l’API. Ecco il comando curl che ho usato:

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"}

Se stai ancora riscontrando problemi, puoi condividere maggiori informazioni sulla tua richiesta API con noi?

1 Mi Piace

Non riesco a capire!

Non riesco a disconnettere un utente utilizzando l’endpoint API /admin/users/{USER_ID}/log_out.json

Sto recuperando con successo l’USER_ID di Discourse con il seguente: /u/by-external/${user.id}.json.

Sto anche recuperando dati colpendo altri endpoint API, quindi sono soddisfatto della chiave API e della meccanica della mia richiesta.

Ma quando cerco di inviare una richiesta post…

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,
  },
});

…ottengo uno stato 404 con il seguente oggetto di ritorno:

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

Sono riuscito a implementare l’SSO senza troppi problemi. Qualsiasi intuizione sul perché la disconnessione potrebbe non funzionare sarebbe ottima.

Saluti.

A prima vista sembra a posto :thinking: . UserID contiene un valore corretto?

Sì, nel caso di test è 1 (ottenuto da una chiamata a /u/by-external/${user.id}.json). Ho anche provato a codificare il valore, solo per ricontrollare… stesso risultato.

Ho spostato i post dall’altro argomento qui per mantenere la discussione raggruppata. :+1:

Mi scuso se è un po’ fuori sincrono. :slight_smile:

3 Mi Piace

Un modo in cui posso replicare il messaggio di errore 404 è usare un user-id non valido. Puoi verificare prima di poter recuperare l’utente tramite id?

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 Mi Piace

Ok, quindi ho confermato che sto recuperando un user_id valido da Discourse, 1 in questo caso…

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

È interessante notare che, quando invio una richiesta cURL all’endpoint log_out per l’user id 1…

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" 

…ricevo una risposta 200, il che suggerisce che l’utente 1 (io) dovrebbe essere disconnesso dal forum, ma quando controllo, non sono stato effettivamente disconnesso - questo è il primo problema.

Il secondo problema è che l’invio della stessa richiesta dal backend della mia app utilizzando axios (dettagliato sopra) si traduce in un 404… molto strano.

Modifica:
Il primo problema non è un problema - la richiesta cURL mi sta disconnettendo con successo - ora devo solo capire perché la richiesta post axios mi restituisce un 404.

1 Mi Piace

Ok, mistero risolto :roll_eyes:

A quanto pare la mia richiesta axios non era formattata correttamente! Dato che non sto inviando alcun corpo nella richiesta POST, avrei dovuto passare un oggetto vuoto con la richiesta.

Grazie per la dritta riguardo alle richieste curl @blake, è quello che alla fine mi ha sbloccato. :+1:

3 Mi Piace

Ciao Sean,

Puoi condividere il codice log_out.json dato che sto lavorando su una richiesta simile?

Ho provato a disconnettere il forum con l’API POST ‘admin/users/{user_id}/log_out.json’ ma restituisce Oops! That page doesn’t exist or is private.
Ho fornito api_key e api-username nelle intestazioni. Qualcuno ha riscontrato lo stesso problema?

Ti servirebbe una chiave API di amministratore per quel endpoint?

1 Mi Piace

Mi sono disconnesso con successo tramite l’API inviando una richiesta POST a /admin/users/1/log_out.json.

Corpo vuoto, intestazioni contenenti un Api-Username amministratore e una Api-Key con ambito globale o ambito granulare con la capacità di disconnessione selezionata.

1 Mi Piace

Sì, ho usato la chiave API dell’amministratore

Con quale software o linguaggio di programmazione hai effettuato la chiamata API? Puoi incollare il tuo codice qui?