/**
  * process Authorization Request
  *
  * @param Akita_OAuth2_Server_DataHandler $dataHandler
  */
 public function processAuthorizationRequest($dataHandler, $allowed_response_type = array('code', 'token', 'code token'))
 {
     $request = $dataHandler->getRequest();
     $response_type = isset($request->param['response_type']) ? $request->param['response_type'] : "";
     if (empty($response_type)) {
         throw new Akita_OAuth2_Server_Error('400', 'invalid_request', "'response_type' is required");
     }
     if (!in_array($response_type, $allowed_response_type)) {
         throw new Akita_OAuth2_Server_Error('400', 'unsupported_response_type');
     }
     // validate client_id
     $client_id = isset($request->param['client_id']) ? $request->param['client_id'] : "";
     if (empty($client_id)) {
         throw new Akita_OAuth2_Server_Error('400', 'invalid_request', "'client_id' is required");
     }
     if (!$dataHandler->validateClientById($client_id)) {
         throw new Akita_OAuth2_Server_Error('400', 'unauthorized_client');
     }
     // validate redirect_uri
     $redirect_uri = isset($request->param['redirect_uri']) ? $request->param['redirect_uri'] : "";
     if (empty($redirect_uri)) {
         throw new Akita_OAuth2_Server_Error('400', 'invalid_request', "'redirect_uri' is required");
     }
     if (!$dataHandler->validateRedirectUri($client_id, $redirect_uri)) {
         throw new Akita_OAuth2_Server_Error('400', 'invalid_request', "'redirect_uri' is invalid");
     }
     // validate scope
     $scope = isset($request->param['scope']) ? $request->param['scope'] : "";
     if (!$dataHandler->validateScope($client_id, $scope)) {
         throw new Akita_OAuth2_Server_Error('400', 'invalid_scope');
     }
 }
 /**
  * process API Request
  *
  * @param Akita_OAuth2_Server_DataHandler $dataHandler
  */
 public function processRequest($dataHandler)
 {
     $request = $dataHandler->getRequest();
     $param_access_token = $request->getAccessToken();
     if (empty($param_access_token)) {
         throw new Akita_OAuth2_Server_Error('400', 'invalid_request', "'access_token' is required");
     }
     $accessToken = $dataHandler->getAccessToken($param_access_token);
     if (is_null($accessToken)) {
         throw new Akita_OAuth2_Server_Error('401', 'invalid_token');
     }
     $authInfo = $dataHandler->getAuthInfoById($accessToken->authId);
     if (is_null($authInfo)) {
         throw new Akita_OAuth2_Server_Error('500', 'server_error');
     }
     return $authInfo;
 }