/** * Get new AccessToken using provided RefreshToken * * @param RefreshToken $refreshToken * @return AccessToken */ protected function getAccessTokenWithRefreshToken(RefreshToken $refreshToken) { // Send post request to authentication service $params = array('client_id' => $this->getConfig()->getClientId(), 'refresh_token' => $refreshToken->getRefreshToken(), 'grant_type' => 'refresh_token'); $response = $this->sendPostRequest("oauth2waitress/oauth2.svc/token", $params); $output = $response['output']; $httpcode = $response['code']; switch ($httpcode) { case "200": $responseObject = json_decode($output); if (isset($responseObject->error)) { // an error occured, the RefreshToken is most likely invalid // delete RefreshToken to retrieve new one on next request $this->getConfig()->getStorage()->deleteRefreshToken(); return null; } // create access token and save it $accessToken = new AccessToken(new DateTime(), $responseObject->access_token, $responseObject->token_type, $responseObject->expires_in); $this->getConfig()->getStorage()->saveAccessToken($accessToken); return $accessToken; } return null; }
public function saveRefreshToken(RefreshToken $refreshToken) { $this->deleteRefreshToken(); $refreshToken->setUserId($this->getUserId()); $this->getObjectManager()->persist($refreshToken); $this->getObjectManager()->flush(); }