/**
  * Build signature
  *
  * @param String $baseString - base string
  * @param OAuthConsumer $consumer - consumer
  * @param OAuthToken $token - token
  * @return String
  */
 public function build($baseString, $consumer, $token)
 {
     $keyParts = array($consumer->getSecret(), $token ? $token->getSecret() : '');
     $keyParts = OAuthUtils::urlEncodeRfc3986($keyParts);
     $key = implode('&', $keyParts);
     return base64_encode(hash_hmac('sha1', $baseString, $key, true));
 }
コード例 #2
0
 /**
  * Build normalized HTTP query
  *
  * @param array $input - HTTP query parameters
  * @return String - normalized query string
  */
 public static function buildHTTPQuery($input)
 {
     if (!$input) {
         return '';
     }
     $keys = OAuthUtils::urlEncodeRfc3986(array_keys($input));
     $values = OAuthUtils::urlEncodeRfc3986(array_values($input));
     $params = array_combine($keys, $values);
     // Parameters are sorted by name, using lexicographical byte value ordering.
     // Ref: Spec: 9.1.1 (1)
     uksort($params, 'strcmp');
     $pairs = array();
     foreach ($params as $parameter => $value) {
         if (is_array($value)) {
             // If two or more parameters share the same name, they are sorted by their value
             // Ref: Spec: 9.1.1 (1)
             natsort($value);
             foreach ($value as $duplicateValue) {
                 $pairs[] = $parameter . '=' . $duplicateValue;
             }
         } else {
             $pairs[] = $parameter . '=' . $value;
         }
     }
     return implode('&', $pairs);
 }
コード例 #3
0
 /**
  * Convert token to string
  *
  * @return string - string equivalent of OAuthToken
  */
 public function toString()
 {
     return 'oauth_token=' . OAuthUtils::urlEncodeRfc3986($this->key) . '&oauth_token_secret=' . OAuthUtils::urlEncodeRfc3986($this->secret);
 }
コード例 #4
0
 /**
  * Create OAuthRequest from Consumer and Token
  *
  * @param OAuthConsumer $consumer - OAuthConsumer
  * @param OAuthToken $token - OAuthToken
  * @param String $httpMethod - http method
  * @param String $httpURL - http URL
  * @param array|null $parameters - parameters
  * @return OAuthRequest
  */
 public static function createFromConsumerAndToken($consumer, $token, $httpMethod, $httpURL, $parameters = null)
 {
     @$parameters or $parameters = array();
     $nonce = OAuthRequest::generateNonce();
     $timestamp = OAuthRequest::generateTimestamp();
     $default = array('oauth_version' => OAuthRequest::VERSION, 'oauth_nonce' => $nonce, 'oauth_timestamp' => $timestamp, 'oauth_consumer_key' => $consumer->getKey());
     if ($token) {
         $default['oauth_token'] = $token->getKey();
     }
     $parameters = array_merge($default, $parameters);
     $urlParts = parse_url($httpURL);
     if (isset($urlParts['query']) && $urlParts['query']) {
         $params = OAuthUtils::parseParameterFromString($urlParts['query']);
         $parameters = array_merge($params, $parameters);
     }
     return new OAuthRequest($httpMethod, $httpURL, $parameters, $nonce, $timestamp);
 }
 public static function build_http_query($params)
 {
     if (!$params) {
         return '';
     }
     // Urlencode both keys and values
     $keys = OAuthUtils::urlencode_rfc3986(array_keys($params));
     $values = OAuthUtils::urlencode_rfc3986(array_values($params));
     $params = array_combine($keys, $values);
     $pairs = array();
     foreach ($params as $parameter => $value) {
         if (is_array($value)) {
             foreach ($value as $duplicate_value) {
                 $pairs[] = $parameter . '=' . $duplicate_value;
             }
         } else {
             $pairs[] = $parameter . '=' . $value;
         }
     }
     // For each parameter, the name is separated from the corresponding value by an '=' character (ASCII code 61)
     // Each name-value pair is separated by an '&' character (ASCII code 38)
     return implode('&', $pairs);
 }