'/admin/users/{id}/log_out.json' não está funcionando

Estou tentando criar um código de exemplo para Sair

O DNS do meu site é ‘aaa.com’ e o ID do usuário é ‘1’.
Criei a URL e enviei a solicitação assim.
-post AAA Sorry Page
Também enviei o cabeçalho com api-key, api-Username.
Mas recebi a resposta “Oops! Essa página não existe ou é privada.”

Estou tentando usar ‘CURL’, assim.
Mas obtive o mesmo resultado. (Oops! Essa página não existe ou é privada ~~~ )

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

Você poderia me ajudar a descobrir o que estou fazendo de errado?

Olá,
Mesmo problema aqui. Você conseguiu resolver isso?
Abraços

1 curtida

Ainda consigo desconectar usuários via API. Aqui está o comando curl que usei:

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 você ainda estiver com problemas, pode compartilhar mais informações sobre sua solicitação de API conosco?

1 curtida

Estou perplexo!

Não consigo desconectar um usuário usando o endpoint da API /admin/users/{USER_ID}/log_out.json

Estou recuperando com sucesso o USER_ID do Discourse com o seguinte: /u/by-external/${user.id}.json.

Também estou recuperando dados ao acessar outros endpoints da API, então estou satisfeito com a chave da API e a mecânica em torno da minha solicitação.

Mas ao tentar enviar uma solicitação 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,
  },
});

…recebo um status 404 com o seguinte objeto de retorno:

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

Consegui implementar o SSO sem muitos problemas. Qualquer insight sobre por que o logout pode não estar funcionando seria ótimo.

Obrigado.

Isso parece bom para mim à primeira vista :thinking: . O UserID contém um valor adequado?

Sim, no caso de teste é 1 (obtido de uma chamada para /u/by-external/${user.id}.json). Também tentei codificar o valor, apenas para verificar novamente… mesmo resultado.

Eu colei as postagens do outro tópico aqui para manter a discussão agrupada. :+1:

Desculpe se estiver um pouco fora de sincronia. :slight_smile:

3 curtidas

Uma maneira de replicar a mensagem de erro 404 é usar um ID de usuário inválido. Você pode verificar se consegue buscar o usuário por ID primeiro?

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 curtida

Ok, então confirmei que estou recuperando um user_id válido do Discourse, 1 neste caso…

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

Curiosamente, quando envio uma solicitação cURL para o endpoint log_out para o ID de usuário 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" 

…recebo uma resposta 200, sugerindo que o usuário 1 (eu) deveria ser desconectado do fórum, mas quando verifico, eu não fui realmente desconectado - esse é o primeiro problema.

O segundo problema é que enviar a mesma solicitação do backend do meu aplicativo usando axios (detalhado acima) resulta em um 404… muito estranho.

Editar:
O primeiro problema não é um problema - a solicitação cURL está me desconectando com sucesso - agora só preciso descobrir por que a solicitação POST do axios está me dando um 404.

1 curtida

Ok - mistério resolvido :roll_eyes:

Acontece que minha requisição axios não estava formatada corretamente! Como não estou enviando nenhum corpo na requisição POST, eu deveria ter passado um objeto vazio com a requisição.

Obrigado pela dica sobre requisições curl @blake - isso foi o que finalmente me ajudou. :+1:

3 curtidas

Olá Sean,

Você pode compartilhar o código log_out.json, já que estou trabalhando em uma solicitação semelhante?

Tentei sair do fórum com a API POST ‘admin/users/{user_id}/log_out.json’, mas retorna com Oops! Essa página não existe ou é privada.
Forneci api_key e api-username nos cabeçalhos. Alguém enfrentou o mesmo problema?

Você precisaria usar uma chave de API de administrador para esse endpoint?

1 curtida

Consegui me desconectar usando a API enviando uma requisição POST para /admin/users/1/log_out.json.

Corpo vazio, cabeçalhos contendo um Api-Username de administrador e uma Api-Key com escopo global ou escopo granular com a capacidade de log-out marcada.

1 curtida

Sim, usei a chave de API de administrador

Com que software ou linguagem de programação você fez a chamada de API? Você pode copiar e colar seu código aqui?