/**
  * Handle Access Token
  *
  * @param  Request $request
  * @return OAuth2AccessToken
  */
 protected function handleAccessToken(Request $request)
 {
     $accessToken = null;
     $header = $request->headers->get('authorization');
     if (!empty($header)) {
         $pos = strpos($header, 'Bearer');
         if ($pos !== false) {
             $accessToken = substr($header, $pos + 7);
         }
     }
     if (empty($accessToken) && $request->query->has('access_token')) {
         $accessToken = $request->query->get('access_token');
     }
     if (empty($accessToken) && $request->getMethod() == 'POST' && $request->server->get('content_type') == 'application/x-www-form-urlencoded') {
         $accessToken = $request->request->get('access_token');
     }
     if (empty($accessToken)) {
         return null;
     }
     if (null !== $this->logger) {
         $this->logger->info('OAuth2 authentication Authorization header found for user.');
     }
     $token = new OAuth2AccessToken();
     $token->setAccessToken($accessToken);
     $token->setSignature($this->getSignature($request));
     $token->setSignedUrl($request->getUri());
     return $token;
 }