· 9 years ago · Oct 25, 2016, 11:08 AM
1function buildBaseString($baseURI, $method, $params) {
2 $r = array();
3 ksort($params);
4 foreach($params as $key=>$value){
5 $r[] = "$key=" . rawurlencode($value);
6 }
7 return $method."&" . rawurlencode($baseURI) . '&' . rawurlencode(implode('&', $r));
8}
9
10function buildAuthorizationHeader($oauth) {
11 $r = 'Authorization: OAuth ';
12 $values = array();
13 foreach($oauth as $key=>$value)
14 $values[] = "$key="" . rawurlencode($value) . """;
15 $r .= implode(', ', $values);
16 return $r;
17}
18
19function hs_tweets_fetch($screen_name = 'XXXXXXXXXXX', $count = 1) {
20
21 $config = array(
22 'oauth_access_token' => 'XXXXXXXXXXXXXX',
23 'oauth_access_token_secret' => 'XXXXXXXXXXXXXXX',
24 'consumer_key' => 'XXXXXXXXXXXXXXXXXXXXXX',
25 'consumer_secret' => 'XXXXXXXXXXXXXXXX',
26 'base_url' => 'https://api.twitter.com/1.1/'
27 );
28
29 $url = 'statuses/user_timeline.json?screen_name=' . $screen_name . '&count=' . $count;
30
31 $url_parts = parse_url($url);
32 parse_str($url_parts['query'], $url_arguments);
33 $full_url = $config['base_url'].$url; // Url with the query on it.
34 $base_url = $config['base_url'].$url_parts['path']; // Url without the query.
35
36 $oauth = array(
37 'oauth_consumer_key' => $config['consumer_key'],
38 'oauth_nonce' => time(),
39 'oauth_signature_method' => 'HMAC-SHA1',
40 'oauth_token' => $config['oauth_access_token'],
41 'oauth_timestamp' => time(),
42 'oauth_version' => '1.0'
43 );
44
45 $base_info = buildBaseString($base_url, 'GET', array_merge($oauth, $url_arguments));
46 $composite_key = rawurlencode($config['consumer_secret']) . '&' . rawurlencode($config['oauth_access_token_secret']);
47 $oauth_signature = base64_encode(hash_hmac('sha1', $base_info, $composite_key, true));
48 $oauth['oauth_signature'] = $oauth_signature;
49
50 $header = array(
51 buildAuthorizationHeader($oauth),
52 'Expect:'
53 );
54 $options = array(
55 CURLOPT_HTTPHEADER => $header,
56 //CURLOPT_POSTFIELDS => $postfields,
57 CURLOPT_HEADER => false,
58 CURLOPT_URL => $full_url,
59 CURLOPT_RETURNTRANSFER => true,
60 CURLOPT_SSL_VERIFYPEER => false
61 );
62
63 $feed = curl_init();
64 curl_setopt_array($feed, $options);
65 $result = curl_exec($feed);
66 $info = curl_getinfo($feed);
67 curl_close($feed);
68
69 if ($info['http_code'] == 200) {
70
71 $result = json_decode($result);
72
73 } else {
74
75 $result = false;
76
77 }
78
79 return $result;
80
81}