VDMDéveloppeurs

Connecter un membre

Lire les VDM ne demande que votre clé. Pour agir au nom d'un membre (voter, commenter, publier une VDM, gérer ses favoris ou son profil), il faut son jeton, obtenu une fois avec son identifiant et son mot de passe.

Votre app est destinée à d'autres membres que vous ? Utilisez plutôt Se connecter avec VDM : le membre se connecte sur viedemerde.fr et votre app ne voit jamais son mot de passe. La connexion par mot de passe décrite ici convient à vos propres outils.

Obtenir le jeton

Envoyez l'identifiant (pseudo ou e-mail) et le mot de passe à POST /user/authenticate, en formulaire :

Shell
curl -i "https://www.viedemerde.fr/api/v2/user/authenticate" \
  -H "X-VDM-Api-Key: $API_KEY" \
  --data-urlencode "[email protected]" \
  --data-urlencode "password=$PASSWORD"

La réponse contient le profil du membre dans data, et son jeton dans l'en-tête X-VDM-Api-Token :

HTTP
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
X-VDM-Api-Key: …
X-VDM-Api-Token: 3f1c9b0e8d7a6f5e4d3c2b1a09f8e7d6

{"data":{"id":123456,"username":"Pseudo",…},"meta":{}}

Un identifiant ou un mot de passe faux renvoie une 401 avec l'erreur 103, un compte banni l'erreur 32 (voir Erreurs).

Utiliser le jeton

Ajoutez-le dans l'en-tête X-VDM-Api-Token de chaque requête, en plus de votre clé. Il ne vaut qu'avec la clé qui l'a obtenu.

Shell
curl -X PATCH "https://www.viedemerde.fr/api/v2/article/123456/bookmark" \
  -H "X-VDM-Api-Key: $API_KEY" \
  -H "X-VDM-Api-Token: $TOKEN"

Dans la référence, les endpoints marqués « Jeton membre obligatoire » répondent 401 sans jeton valide. Les autres acceptent aussi un jeton, et tiennent alors compte du membre (ses votes, ses favoris…).

Garder et révoquer le jeton

  • Enregistrez le jeton (dans le trousseau de l'appareil pour une app), jamais le mot de passe.
  • Le jeton reste valable jusqu'à ce que le membre se déconnecte. Pour le déconnecter, appelez GET /user/logout avec son jeton : celui-ci est supprimé.
  • Un jeton inconnu est ignoré : la requête passe sans membre, et un endpoint qui demande un jeton répond 401. Redemandez alors la connexion.