• # A essayer

    Posté par  (site web personnel, Mastodon) . Évalué à 2 (+0/-0).

    Comme indiqué sur la page https://linuxfr.org/developpeur , en théorie Doorkeeper te permet de rafraîchir ton access_token grâce au refresh_token récupéré à la connexion de l'utilisateur.

    Voir le chapitre Renewing the access token de la documentation de Doorkeeper.

    Donc, en théorie un POST sur https://linuxfr.org/api/oauth/token avec ces informations devraient suffire:

    {
    "client_id": "l'identifiant publique de ton client",
    "client_secret": "le secret de ton client",
    "redirect_uri": "l'url que ton client Ă©coute pour la redirection",
    "grant_type": "refresh_token",
    "refresh_token": "Le refresh_token reçu en même temps que ton premier access_token"
    }

    Mais je n'ai jamais utilisé l'API donc ça me sera difficile de t'en dire plus.

    Est-ce que tu utilises une bibliothèque pour gérer OAuth ?

    • [^] # Re: A essayer

      Posté par  (site web personnel, Mastodon) . Évalué à 2 (+0/-0). Dernière modification le 27 octobre 2021 Ă  00:22.

      Bon pour vérifier la théorie, j'ai fais un rapide exemple avec un client JavaScript: https://projects.adorsaz.ch/adrien/example-refresh-token-for-linuxfr.org/-/blob/main/src/app.js

      Ce client est vraiment stupide: il récupère l'access_token et le refresh_token et, tout de suite après, il essaie de rafraîchir l'access_token et il affiche tout ça dans le log du serveur.

      Un exemple d'exécution sur ma machine me donne:

      GET / - - 
      code found:  ff48b...
      Access token response (status: 200):  {
        access_token: '255367...',
        token_type: 'Bearer',
        expires_in: 86400,
        refresh_token: '140a2c...',
        scope: 'account',
        created_at: 1635286565
      }
      Refresh token response (status: 200):  {
        access_token: '40dd64...',
        token_type: 'Bearer',
        expires_in: 86400,
        refresh_token: '41566c....',
        scope: 'account',
        created_at: 1635286565
      }
      GET /?code=ff48b... - - 
      

      Bien sûr, j'ai retiré mes token de l'exemple, mais je t'ai laissé les 6 premiers caractères pour que tu voies qu'ils ont bien changé.

      Edit: Comme tu le vois dans le code, il faut faire attention à ce que le POST sur /token utilise le format x-www-form-urlencoded et non pas du JSON directement. C'est pour ça que j'utilise l'API URLSearchParams: https://github.com/node-fetch/node-fetch#post-with-form-parameters

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.