예제 #1
0
 public function generateLaunchData()
 {
     if (!$this->hasRequiredParams()) {
         throw new InvalidLTIConfigurationException("Some required parameters are missing");
     }
     $this->parameters['lti_version'] = array_key_exists('lti_version', $this->parameters) ? $this->parameters['lti_version'] : 'LTI-1p0';
     $this->parameters['lti_message_type'] = array_key_exists('lti_message_type', $this->parameters) ? $this->parameters['lti_message_type'] : 'basic-lti-launch-request';
     $url = $this->toolConfiguration->getLaunchUrl();
     //@TODO: Remove query string parameters and append them to parameters
     $consumer = new \OAuth($this->consumerKey, $this->consumerSecret, OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_URI);
     $timestamp = time();
     $nonce = md5($timestamp);
     $consumer->setTimestamp($timestamp);
     $consumer->setNonce($nonce);
     $signature = $consumer->generateSignature('POST', $url, $this->parameters);
     $this->parameters[LaunchParameters::OAUTH_CONSUMER_KEY] = $this->consumerKey;
     $this->parameters[LaunchParameters::OAUTH_SIGNATURE_METHOD] = 'HMAC-SHA1';
     $this->parameters[LaunchParameters::OAUTH_VERSION] = '1.0';
     $this->parameters[LaunchParameters::OAUTH_TIMESTAMP] = $timestamp;
     $this->parameters[LaunchParameters::OAUTH_NONCE] = $nonce;
     $this->parameters[LaunchParameters::OAUTH_SIGNATURE] = $signature;
     return $this->parameters;
 }
예제 #2
0
 private function _oauthReq($url, $content = null, $reqType = null, $nonce = null, $timestamp = null)
 {
     try {
         $oauth = new OAuth($this->clientKey, $this->clientSecret, OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_URI);
         $oauth->enableDebug();
         $oauth->setToken($this->tokenKey, $this->tokenSecret);
         if (!is_null($nonce)) {
             $oauth->setNonce($nonce);
         }
         if (!is_null($timestamp)) {
             $oauth->setTimestamp($timestamp);
         }
         if (is_null($reqType)) {
             $reqType = OAUTH_HTTP_METHOD_GET;
         }
         $oauth->fetch("{$url}", $content, $reqType);
         $ret = $oauth->getLastResponse();
         return $ret;
     } catch (OAuthException $e) {
         //return $e->lastResponse;
         return $e;
     }
 }
$consumer_key = "mykey";
$consumer_secret = "mysecret";
$api_url = "https://mysite.byappdirect.com/api/hostedCheckout/v1/transactions";
$http_method = "POST";
$returnUrl = "http://saralam.com";
$nonce_range = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
$nonce = '';
for ($i = 0; $i < 15; ++$i) {
    $rind = floor((double) rand() / (double) getrandmax() * strlen($nonce_range));
    $nonce .= substr($nonce_range, $rind, 1);
}
$timestamp = time();
$version = "1.0";
$oauth = new OAuth($consumer_key, $consumer_secret);
$oauth->setNonce($nonce);
$oauth->setTimestamp($timestamp);
$oauth->setversion($version);
$sign = $oauth->generateSignature('POST', $api_url);
$oauth_header = 'Authorization: OAuth oauth_version=1.0, oauth_nonce=' . $nonce . ',oauth_timestamp=' . $timestamp . ',oauth_consumer_key=mykey, oauth_signature_method=HMAC-SHA1,oauth_signature=' . $sign;
$ch = curl_init($api_url);
$to_postdata = array("productId" => "37392", "token" => '123446788-dgfgfgfg-uytt', "type" => "PURCHASE", "user" => array("email" => '*****@*****.**', "firstName" => "Test", "lastName" => "Test"), "company" => array("name" => "Saralam"), "returnUrl" => $returnUrl);
$data_string = json_encode($to_postdata);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Accept: application/json', $oauth_header));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HEADER, true);
예제 #4
0
 /**
  * @see OAuthHanlder::GetSignedRequestParameters()
  */
 public function GetSignedRequestParameters($credentials, $url, $method = NULL)
 {
     if (empty($method)) {
         $method = 'POST';
     }
     $params = array();
     $params['oauth_consumer_key'] = $credentials['oauth_consumer_key'];
     $params['oauth_token'] = $credentials['oauth_token'];
     $params['oauth_signature_method'] = 'HMAC-SHA1';
     $params['oauth_timestamp'] = time();
     $params['oauth_nonce'] = uniqid();
     $params['oauth_version'] = '1.0a';
     $oauth = new OAuth($credentials['oauth_consumer_key'], $credentials['oauth_consumer_secret'], OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_AUTHORIZATION);
     $oauth->setRequestEngine(OAUTH_REQENGINE_CURL);
     $oauth->setVersion('1.0a');
     $oauth->setToken($credentials['oauth_token'], $credentials['oauth_token_secret']);
     $oauth->setTimestamp($params['oauth_timestamp']);
     $oauth->setNonce($params['oauth_nonce']);
     $oauth->setVersion($params['oauth_version']);
     $signature = $oauth->generateSignature(self::$OAUTH_METHOD_ENUMS[$method], $url);
     $params['oauth_signature'] = $signature;
     return $params;
 }
예제 #5
0
<?php

require 'server.inc';
$x = new OAuth('conskey', 'conssecret', OAUTH_SIG_METHOD_PLAINTEXT);
$x->setRequestEngine(OAUTH_REQENGINE_STREAMS);
$x->setTimestamp(12345);
$x->setNonce('testing');
$port = random_free_port();
$pid = http_server("tcp://127.0.0.1:{$port}", array("HTTP/1.0 200 OK\r\nContent-Type: text/plain\r\nContent-Length: 40\r\n\r\noauth_token=1234&oauth_token_secret=4567"), $output);
$x->setAuthType(OAUTH_AUTH_TYPE_URI);
$x->setToken("key", "secret");
var_dump($x->getAccessToken("http://127.0.0.1:{$port}/test"));
fseek($output, 0, SEEK_SET);
var_dump(stream_get_contents($output));
http_server_kill($pid);