'/admin/users/{id}/log_out.json' no funciona

Estoy intentando crear un código de ejemplo para cerrar sesión.

El DNS de mi sitio es ‘aaa.com’ y el ID de usuario es ‘1’.
Creé la URL y envié la solicitud de esta manera.
-post AAA Sorry Page
Además, envié la cabecera con api-key y api-Username.
Pero recibí la respuesta “Oops! That page doesn’t exist or is private.”

Estoy intentando hacerlo con ‘CURL’, así.
Pero obtuve el mismo resultado. (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” \

¿Podrías ayudarme a saber qué estoy haciendo mal?

Hola,
Mismo problema aquí. ¿Llegaste a alguna parte con esto?
Saludos

1 me gusta

Todavía puedo cerrar la sesión de los usuarios a través de la API. Aquí está el comando curl que utilicé:

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

Si todavía tiene problemas, ¿puede compartir más información sobre su solicitud de API con nosotros?

1 me gusta

¡Estoy perplejo!

No puedo cerrar la sesión de un usuario usando el endpoint de la API /admin/users/{USER_ID}/log_out.json

Estoy obteniendo con éxito el USER_ID de Discourse con lo siguiente: /u/by-external/${user.id}.json.

También estoy obteniendo datos al acceder a otros endpoints de la API, así que estoy satisfecho con la clave de API y la mecánica de mi solicitud.

Pero al intentar enviar una solicitud 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,
  },
});

…recibo un estado 404 con el siguiente objeto de retorno:

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

Logré implementar SSO sin demasiados problemas. Cualquier información sobre por qué el cierre de sesión podría no estar funcionando sería genial.

Saludos.

A primera vista me parece bien :thinking: . ¿UserID tiene un valor correcto?

Sí, en el caso de prueba es 1 (obtenido de una llamada a /u/by-external/${user.id}.json). También intenté codificar el valor de forma rígida, solo para verificar… mismo resultado.

He movido las publicaciones del otro tema aquí para mantener la discusión agrupada. :+1:

Disculpen si está un poco fuera de sincronía. :slight_smile:

3 Me gusta

Una forma de replicar el mensaje de error 404 es usar un ID de usuario no válido. ¿Puedes verificar primero que puedes obtener el usuario por 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 me gusta

Ok, así que he confirmado que estoy recuperando un user_id válido de Discourse, 1 en este caso…

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

Curiosamente, cuando envío una solicitud cURL al endpoint log_out para el 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" 

…recibo una respuesta 200, lo que sugiere que el usuario 1 (yo) debería ser desconectado del foro, pero cuando compruebo, en realidad no me han desconectado - ese es el primer problema.

El segundo problema es que enviar la misma solicitud desde el backend de mi aplicación usando axios (detallado arriba) resulta en un 404… muy extraño.

Editar:
El primer problema no es un problema - la solicitud cURL me está desconectando con éxito - ahora solo necesito averiguar por qué la solicitud post de axios me está dando un 404.

1 me gusta

Ok, misterio resuelto :roll_eyes:

Resulta que mi solicitud de axios no estaba formateada correctamente. Como no estoy enviando ningún cuerpo en la solicitud POST, debería haber pasado un objeto vacío con la solicitud.

Gracias por la indicación sobre las solicitudes curl @blake, eso finalmente me ayudó a resolverlo. :+1:

3 Me gusta

Hola Sean,

¿Puedes compartir el código de log_out.json ya que estoy trabajando en una solicitud similar?

He intentado cerrar sesión en el foro con la API de publicación ‘admin/users/{user_id}/log_out.json’, pero devuelve Oops! Esa página no existe o es privada.
He proporcionado api_key y api-username en las cabeceras. ¿Alguien se ha enfrentado al mismo problema?

¿Necesitarías usar una clave de API de administrador para ese endpoint?

1 me gusta

Me desconecté exitosamente usando la API enviando una solicitud POST a /admin/users/1/log_out.json.

Cuerpo vacío, encabezados que contienen un Api-Username de administrador y una Api-Key con alcance global o alcance granular con la capacidad de cierre de sesión marcada.

1 me gusta

Sí, he utilizado la clave API de administrador.

¿Con qué software o lenguaje de programación realizó la llamada a la API? ¿Puede copiar y pegar su código aquí?