private function getAccessToken(User $user) { $currentTime = new \DateTime(); $accessToken = $user->getAccessToken(); if ($currentTime >= $user->getExpireTime()) { $accessTokenData = json_decode($user->getAccessTokenData()); $tokenResponse = $this->refreshToken($accessTokenData->refresh_token); $accessToken = $tokenResponse->access_token; $currentTime->add(new \DateInterval("PT3600S")); $user->setAccessToken($accessToken); $user->setExpireTime($currentTime); $user->setAccessTokenData(json_encode($tokenResponse)); $this->entityManager->merge($user); $this->entityManager->flush(); } return $accessToken; }