4.2.3 - Accéder aux données privées d’un utilisateur: authorization_code - Site étudiant de l'UTT

Logo du site Wiki UTT

4.2.3 - Accéder aux données privées d’un utilisateur: authorization_code

Vous êtes désormais capable de récupérer un token d’accès pour votre application. Cependant, même si nous n’avons pas encore récupéré de données avec, ce token sera limités aux données publiques ou à vos propres données (qui intéressent peu vos utilisateurs).

Venons en maintenant à créer un token pour accéder aux données de l’utilisateur connecté à EtuUTT.

Pour cela il nous faut passer par le type authorization_code. Cependant, ce code nécessite une autorisation par l’utilisateur. Il y a donc deux étapes pour récupérer notre token d’accès :

1. Rediriger l’utilisateur vers :

http://etu.utt.fr/api/oauth/authorize?client_id=<client_id>&scope=public%20private_user_account&response_type=code&state=xyz 

client_id correspondant à votre client ID, et scopes est la liste des scopes dont vous avez besoin pour le token séparés par des espaces

2. Récupérer le code d’autorisation pour créer un token d’accès

Quand vous allez sur :

http://etu.utt.fr/api/oauth/authorize?client_id=<client_id>&scope=public%20private_user_account&response_type=code&state=xyz

vous pouvez vous rendre compte d’à quoi ressemblera votre page d’autorisation.

Si vous cliquez sur “Accepter”, vous serez alors redirigés sur votre application avec un paramètre code :

https://myapp.com/redirect_url/?code=65707fb5aa64db8c5c73983e22081b2dbab54c51&state=xyz

Par exemple, ici nous avons récupéré un code d’authorisation : 65707fb5aa64db8c5c73983e22081b2dbab54c51

Ce code est valide pendant 30 secondes et est transformable en token d’accès une seule fois, donc ne traînez pas !

Prenons un exemple : j’ai créé mon application avec comme adresse de retour https://myapp.com/auth.php. Dans mon fichier auth.php, j’ai :

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

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

var_dump($response->json());

Nous avons alors une réponse de la forme :

{
    "access_token": "a314da50ed469583a8377aff96848aa3300777e8",
    "expires_in": 3600,
    "token_type": "Bearer",
    "scope": "public private_user_account",
    "refresh_token": "f7fc59610c2a7fa8365c87b4f93b589e50826618"
}

Comme précédemmant, c’est la clé access_token qui nous intéresse le plus pour accéder à l’API.

Cependant, nous en avons une supplémentaire : le refresh_token. Cela correspond à un autre grant_type, abordé dans le document suivant.


Dernière modification par Aurelien LABATE : 04/10/17 23:37
Page modifiable par Etudiant
Page visible par Etudiant et Exterieur