· 8 years ago · Jan 10, 2017, 02:12 AM
1function getRequestToken(){
2
3 $baseUrl = 'https://oauth.intuit.com/oauth/v1/get_request_token';
4 $method = 'GET';
5
6 $oauth_callback = 'http://mywebsite.com/oauth-callback.php';
7
8 $oauth_consumer_key='MyConsumerKey';
9 $oauth_nonce = generateNonce(10);
10 $oauth_timestamp = time();
11 $oauth_signature_method = 'HMAC-SHA1';
12 $oauth_version = '1.0';
13
14 $paramArray = array('oauth_callback',$oauth_callback,
15 'oauth_consumer_key',$oauth_consumer_key,
16 'oauth_nonce',$oauth_nonce,
17 'oauth_timestamp',$oauth_timestamp,
18 'oauth_signature_method',$oauth_signature_method,
19 'oauth_version',$oauth_version);
20
21 $oauth_signature = generateSignature($method, $baseUrl, $paramArray, '');
22
23 $url = $baseUrl.'?'.
24 'oauth_callback='.$oauth_callback.'&'.
25 'oauth_consumer_key='.$oauth_consumer_key.'&'.
26 'oauth_nonce='.$oauth_nonce.'&'.
27 'oauth_signature='.$oauth_signature.'&'.
28 'oauth_signature_method='.$oauth_signature_method.'&'.
29 'oauth_timestamp='.$oauth_timestamp.'&'.
30 'oauth_version='.$oauth_version;
31
32
33 $ch = curl_init();
34 curl_setopt($ch, CURLOPT_URL, $url);
35 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
36 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
37 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
38 $content = curl_exec($ch);
39 curl_close ($ch);
40 parse_str( $content, $output );
41 echo 'oauth_token='.$output['oauth_token'];
42
43}
44
45function getAccessToken($oauth_token, $oauth_verifier){
46
47 $baseUrl = 'https://oauth.intuit.com/oauth/v1/get_access_token';
48 $method = 'GET';
49
50 $oauth_signature_method = 'HMAC-SHA1';
51 $oauth_version = '1.0';
52 $oauth_consumer_key='MyConsumerKey';
53 $oauth_nonce = generateNonce(10);
54 $oauth_timestamp = time();
55
56 $paramArray = array('oauth_consumer_key', $oauth_consumer_key,
57 'oauth_nonce', $oauth_nonce,
58 'oauth_signature_method', $oauth_signature_method,
59 'oauth_timestamp', $oauth_timestamp,
60 'oauth_version', $oauth_version,
61 'oauth_verifier', $oauth_verifier,
62 'oauth_token', $oauth_token);
63
64 $oauth_signature = generateSignature($method, $baseUrl, $paramArray, '');
65
66 $url = $baseUrl.'?'.
67 'oauth_consumer_key='.$oauth_consumer_key.'&'.
68 'oauth_nonce='.$oauth_nonce.'&'.
69 'oauth_signature='.$oauth_signature.'&'.
70 'oauth_signature_method='.$oauth_signature_method.'&'.
71 'oauth_timestamp='.$oauth_timestamp.'&'.
72 'oauth_version='.$oauth_version.'&'.
73 'oauth_verifier='.$oauth_verifier.'&'.
74 'oauth_token='.$oauth_token;
75
76
77 $ch = curl_init();
78 curl_setopt($ch, CURLOPT_URL, $url);
79 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
80 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
81 $content = curl_exec($ch);
82 curl_close ($ch);
83 echo $content;
84}
85
86function generateNonce($length) {
87 $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
88 $charactersLength = strlen($characters);
89 $randomString = '';
90 for ($i = 0; $i < $length; $i++) {
91 $randomString .= $characters[rand(0, $charactersLength - 1)];
92 }
93 return $randomString;
94}
95
96function generateSignature( $method, $baseUrl, $paramArray, $tokenSecret ){
97
98 $consumerSecret = rawurlencode('MyConsumerSecret');
99 $tokenSecret = rawurlencode($tokenSecret);
100
101 $encodedArray = array();
102 $fullParamString = '';
103 $tempString = '';
104 $signatureBaseString = '';
105
106 //Step1: percent encode the strings, then concat into key/value pairs
107 foreach ($paramArray as $key=>&$p){
108 $p = rawurlencode($p);
109
110 if ($key%2 == 0){
111 $tempString = $p . '=';
112 } else {
113 $encodedArray[] = $tempString . $p;
114 }
115 }
116
117 //Step2: sort the strings
118 sort($encodedArray);
119
120 //Add & to all but the last
121 foreach ($encodedArray as $key=>&$e){
122 if($key != count($encodedArray)-1){
123 $e = $e . '&';
124 }
125 }
126
127 //Step3: create Signature Base String
128 $signatureBaseString = $method.'&'.rawurlencode($baseUrl).'&';
129 foreach ($encodedArray as $keyValuePair){
130 $fullParamString = $fullParamString . $keyValuePair;
131 }
132 $signatureBaseString = $signatureBaseString . rawurlencode($fullParamString);
133
134 $secrets = $consumerSecret .'&'. $tokenSecret;
135
136 //Sign the signature base string
137 $signature = base64_encode(hash_hmac('sha1', $signatureBaseString, $secrets, true ));
138
139 return $signature;
140}