/** * Tries to authenticate a user * @param Request $request The request * @return \Exception|RedirectResponse Returns an exception when authentication fails, or a redirect response when a redirect is required * @throws \fkooman\OAuth\Client\Exception\ApiException */ public function tryAuthentication(Request $request) { $this->clientConfig->setRedirectUri($request->getUri()); if ($request->query->has('code') || $request->query->has('error')) { try { $this->callback->handleCallback($request->query->all()); } catch (AuthorizeException $ex) { return $ex; } catch (CallbackException $ex) { return $ex; } } if ($request->query->has('code')) { $request->query->remove('code'); $request->query->remove('state'); $request->server->set('QUERY_STRING', http_build_query($request->query->all())); return new RedirectResponse($request->getUri()); } if (!$this->getAccessToken()) { return new RedirectResponse($this->api->getAuthorizeUri($this->context)); } }