'/admin/users/{id}/log_out.json' ne fonctionne pas

J’essaie de créer un exemple de code pour la déconnexion.

Le DNS de mon site est ‘aaa.com’ et l’ID utilisateur est ‘1’.
J’ai créé l’URL et envoyé la requête comme ceci :
-post AAA Sorry Page
J’ai également envoyé l’en-tête avec api-key, api-Username.
Mais j’ai reçu la réponse “Oops ! Cette page n’existe pas ou est privée.”

J’essaie avec ‘CURL’, comme ceci.
Mais j’ai obtenu le même résultat. (Oops ! Cette page n’existe pas ou est privée ~~~ )

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

Pourriez-vous m’aider à comprendre ce que je fais de mal ?

Salut,
Même problème ici. As-tu trouvé une solution ?
Cordialement

1 « J'aime »

Je peux toujours déconnecter les utilisateurs via l’API. Voici la commande curl que j’ai utilisée :

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 vous rencontrez toujours des problèmes, pouvez-vous partager plus d’informations sur votre requête API avec nous ?

1 « J'aime »

Je suis bloqué !

Je n’arrive pas à déconnecter un utilisateur en utilisant le point de terminaison de l’API /admin/users/{USER_ID}/log_out.json

Je récupère avec succès l’USER_ID de Discourse avec le code suivant : /u/by-external/${user.id}.json.

Je récupère également des données en accédant à d’autres points de terminaison de l’API, donc je suis satisfait de la clé API et de la mécanique autour de ma requête.

Mais lorsque j’essaie d’envoyer une requête 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,
  },
});

…j’obtiens un statut 404 avec l’objet de retour suivant :

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

J’ai réussi à implémenter le SSO sans trop de difficultés. Tout éclaircissement sur la raison pour laquelle la déconnexion pourrait ne pas fonctionner serait apprécié.

Cordialement.

Cela me semble correct à première vue :thinking: . Est-ce que UserID contient une valeur appropriée ?

Oui, dans le cas de test, c’est 1 (obtenu à partir d’un appel à /u/by-external/${user.id}.json). J’ai également essayé de coder la valeur en dur, juste pour vérifier… même résultat.

J’ai déplacé les messages de l’autre sujet ici pour regrouper la discussion. :+1:

Désolé si c’est un peu désynchronisé. :slight_smile:

3 « J'aime »

Une façon de reproduire le message d’erreur 404 est d’utiliser un identifiant d’utilisateur invalide. Pouvez-vous d’abord vérifier que vous pouvez récupérer l’utilisateur par identifiant ?

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 « J'aime »

Ok, j’ai confirmé que je récupère un user_id valide de Discourse, 1 dans ce cas…

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

Fait intéressant, lorsque j’envoie une requête cURL au point de terminaison log_out pour l’ID utilisateur 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" 

…j’obtiens une réponse 200, suggérant que l’utilisateur 1 (moi) devrait être déconnecté du forum, mais quand je vérifie, je n’ai pas été réellement déconnecté - c’est le premier problème.

Le deuxième problème est que l’envoi de la même requête depuis le backend de mon application à l’aide d’axios (détaillé ci-dessus) aboutit à un 404… très étrange.

Edit :
Le premier problème n’en est pas un - la requête cURL me déconnecte avec succès - il faut maintenant comprendre pourquoi la requête POST axios me renvoie un 404.

1 « J'aime »

Ok - mystère résolu :roll_eyes:

Il s’avère que ma requête axios n’était pas formatée correctement ! Comme je n’envoie pas de corps dans la requête POST, j’aurais dû passer un objet vide avec la requête.

Merci pour l’orientation concernant les requêtes curl @blake - c’est ce qui m’a finalement permis de résoudre le problème. :+1:

3 « J'aime »

Salut Sean,

Peux-tu s’il te plaît partager le code log_out.json car je travaille sur une demande similaire.

J’ai essayé de me déconnecter du forum avec l’API POST ‘admin/users/{user_id}/log_out.json’ mais cela renvoie Oops ! Cette page n’existe pas ou est privée.
J’ai fourni api_key et api-username dans les en-têtes. Quelqu’un a-t-il rencontré le même problème ?

Auriez-vous besoin d’une clé d’API d’administrateur pour ce point de terminaison ?

1 « J'aime »

Je me suis déconnecté avec succès via l’API en envoyant une requête POST à /admin/users/1/log_out.json.

Corps vide, en-têtes contenant un Api-Username administrateur et une Api-Key avec une portée globale ou une portée granulaire avec la capacité de déconnexion cochée.

1 « J'aime »

Oui, j’ai utilisé la clé API d’administrateur

Avec quel logiciel ou langage de programmation avez-vous effectué l’appel API ? Pouvez-vous copier-coller votre code ici ?