Skip to content

Refresh tokens

Thomas Chauchefoin edited this page Mar 29, 2016 · 1 revision

Alors qu'avec client_credentials vous pouviez demander autant de token que vous vouliez, avec le authorization_code vous avez besion de l'approbation de l'utilisateur à chaque fois que vous voulez un token. Cependant, ces tokens ne durent qu'une heure : vous ne pouvez pas demander à l'utiisateur d'accepter votre application toutes les heures !

Le refresh_token est une solution à ce problème : ce token est valide un mois entier et permet de regérérer des tokens d'accès. Stockez donc le en base de donnée, il est important !

Par exemple, avec le refresh_token ci-dessus :

    <?php

    $client = new Client([
        'base_url' => 'https://etu.utt.fr/',
        'defaults' => [
            'auth' => ['<client_id>', '<client_secret>']
        ]
    ]);

    $response = $client->post('/api/oauth/token', [ 'body' => [
        'grant_type' => 'refresh_token',
        'refresh_token' => 'f7fc59610c2a7fa8365c87b4f93b589e50826618'
    ]]);

    var_dump($response->json());

Nous avons une réponse de la forme :

    {
        "http": {
            "status": 200,
            "message": "OK"
        },
        "response": {
            "access_token": "ed7653ce2cfce53ee96efb3ed485ecbcecc83545",
            "expires_in": 3600,
            "token_type": "Bearer",
            "scope": "public",
            "refresh_token": "579a9f9f5545f90002916aaebf5d9346070eb7c0"
        }
    }
Quand vous demandez un token d'accès avec un refresh_token, ce refresh_token est supprimé (il n'est
plus utilisable) et un aute est regénéré, présent dans la réponse, comme ci-dessus. Cest ce nouveau
refresh_token qu'il faudra utiliser.