/**
  * @param Request $request
  * @return RedirectResponse
  */
 public function authorize(Request $request)
 {
     $requestToken = $this->requestTokenStorage->getStoredRequestToken();
     $this->requestTokenStorage->removeStoredRequestToken();
     if ($requestToken === null || !$this->oAuthUrlHelper->hasValidRequestToken($request, $requestToken)) {
         return new Response('Invalid request token.', 500);
     }
     $accessToken = $this->oAuthService->getAccessToken($requestToken, $this->oAuthUrlHelper->getOAuthVerifier($request));
     try {
         $destination = $this->oAuthUrlHelper->getDestinationUri($request);
     } catch (\InvalidArgumentException $e) {
         return new Response($e->getMessage(), 400);
     }
     return $this->oAuthCallbackHandler->handle($accessToken, $destination);
 }