From 2cb26f0ddf81d77091d6e3ef706f5058ea784a5e Mon Sep 17 00:00:00 2001 From: Jake Bell Date: Mon, 28 Sep 2020 13:48:26 -0400 Subject: [PATCH] Carrying over refresh token --- src/OAuth/OAuth2/Service/AbstractService.php | 23 ++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/OAuth/OAuth2/Service/AbstractService.php b/src/OAuth/OAuth2/Service/AbstractService.php index e5c58783..fac360ec 100644 --- a/src/OAuth/OAuth2/Service/AbstractService.php +++ b/src/OAuth/OAuth2/Service/AbstractService.php @@ -211,6 +211,9 @@ public function refreshAccessToken(TokenInterface $token) $parameters, $this->getExtraOAuthHeaders() ); + + $responseBody = $this->carryRefreshToken($responseBody, $refreshToken); + $token = $this->parseAccessTokenResponse($responseBody); $this->storage->storeAccessToken($this->service(), $token); @@ -241,6 +244,26 @@ public function needsStateParameterInAuthUrl() return $this->stateParameterInAuthUrl; } + /** + * Carry the refresh_token for next time getting refreshed + * + * @param $responseBody + * + * @param $refreshToken + * + * @return string + */ + protected function carryRefreshToken($responseBody, $refreshToken) + { + $responseJson = json_decode($responseBody, true); + if (empty($responseJson['refresh_token'])) { + $responseJson['refresh_token'] = $refreshToken; + return json_encode($responseJson); + } else { + return $responseBody; + } + } + /** * Validates the authorization state against a given one. *