J'utilise le client league/oauth avec guzzle dans une WebApp Slim3 fonctionnant avec Microsoft Graph ... et je ne peux pas demander un nouveau jeton par un jeton de rafraîchissement donné ...La requête d'actualisation Microsoft-Graph échoue ... AADSTS70000
ceci est mon di-conteneur pour la ligue/oauth-client:
$container['oauthprovider'] = function()
{
$provider = new \League\OAuth2\Client\Provider\GenericProvider(
[
'clientId' => getenv('ENV_CLIENT_ID'),
'clientSecret' => getenv('ENV_CLIENT_SECRET'),
'redirectUri' => getenv('ENV_REDIRECT_URL'),
'urlAuthorize' => getenv('ENV_AUTHORIZE_URL'),
'urlAccessToken' => getenv('ENV_URL_ACCESS_TOKEN'),
'urlResourceOwnerDetails' => '',
'scopes' => 'offline_access user.read people.read user.read.all openid mail.send'
]
);
return $provider;
};
fonctionne très bien - dans mon Slim3-Route après redirect je suis arrivé, tous les jetons refresh_token, etc.
$provider = $this -> oauthprovider;
$CODE = filter_var($_GET['code'], FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$accessToken = $provider -> getAccessToken('authorization_code',
['code' => $CODE]
);
...
$existingAccessToken = $accessToken -> getToken();
$refreshToken = $accessToken -> getRefreshToken();
$expiresIn = $accessToken -> getExpires();
$expired = ($accessToken -> hasExpired() ? true : false);
$client = $this -> guzzzle;
...
Et si je tente de me rafraîchir jeton à ce moment - dans le même Slim3 route - il fonctionne très bien:
$newAccessToken = $provider -> getAccessToken('refresh_token', [
'refresh_token' => $accessToken -> getRefreshToken(),
'grant_type' => 'refresh_token'
]);
Mais ce n'est pas mon objectif - je dois rafraîchir le jeton en atteignant la durée de vie a expiré - 1 heure - dans un autre Slim3-Route:
$accessToken = unserialize($session -> get('serialized_token'));
$refreshToken = unserialize($session -> get('serialized_refresh_token'));
$code = $session -> get('code');
$provider = $this -> oauthprovider;
$client = $this -> guzzzle;
...
$req = $client -> request('POST',
'https://login.windows.net/common/oauth2/token', [
'form_params' => [
'accept' => 'application/json',
'grant_type'=> 'refresh_token',
'client_id' => getenv('ENV_CLIENT_ID'),
'client_secret' => getenv('ENV_CLIENT_SECRET'),
'refresh_token' => (string) $refreshToken,
'redirect_uri' => getenv('ENV_REDIRECT_URL')
]
]);
la réponse:
Client error:
POST https://login.windows.net/common/oauth2/token
resulted in a400 Bad Request
response: {"error":"invalid_grant","error_description":"AADSTS70000: Transmission data parser failure: Refresh Token is malformed (truncated...)
le jeton de rafraîchissement est exactement le même que ce que je suis arrivé dans ma demande initiale.
Toute personne expérimentée avec oauth-client/guzzle/Microsoft Graph - Quoi/Où est mon erreur?
Veuillez ne pas utiliser de blasphème. –