-
Notifications
You must be signed in to change notification settings - Fork 14
Données privées
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 :
- 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 ;
- 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 :
{
"http": {
"status": 200,
"message": "OK"
},
"response": {
"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.