/** * Validate request and header parameters. * * @param array $protocolParams * @param array $requiredParams * @return void * @throws Exception|OauthInputException */ protected function _validateProtocolParams($protocolParams, $requiredParams) { // validate version if specified. if (isset($protocolParams['oauth_version'])) { $this->_validateVersionParam($protocolParams['oauth_version']); } // Required parameters validation. Default to minimum required params if not provided. if (empty($requiredParams)) { $requiredParams = array("oauth_consumer_key", "oauth_signature", "oauth_signature_method", "oauth_nonce", "oauth_timestamp"); } $this->_checkRequiredParams($protocolParams, $requiredParams); if (isset($protocolParams['oauth_token']) && !$this->_tokenProvider->validateOauthToken($protocolParams['oauth_token'])) { throw new Exception('Token is not the correct length'); } // Validate signature method. if (!in_array($protocolParams['oauth_signature_method'], self::getSupportedSignatureMethods())) { throw new OauthInputException('Signature method %1 is not supported', [$protocolParams['oauth_signature_method']]); } $consumer = $this->_tokenProvider->getConsumerByKey($protocolParams['oauth_consumer_key']); $this->_nonceGenerator->validateNonce($consumer, $protocolParams['oauth_nonce'], $protocolParams['oauth_timestamp']); }