参数打破了OAuth

时间:2016-05-06 10:44:15

标签: php twitter-oauth

我有一个数组$parameters = array_merge($oauth, $fields);,其中包含screen_name和count。 无论我尝试什么,如果我添加它们我都会收到错误

  

无法验证您的身份。

一次尝试是: $settings = array( 'oauth_access_token' => "304291054-X3AyJrHYUswZQbXXXXXXXXXXXXXOKw53xOi9E", 'oauth_access_token_secret' => "iWuakK6iWsfXXXXXXXXXSGcW6WeqxLsiQf", 'consumer_key' => "odXXXXXXXXXXkBg6GmsTg", 'consumer_secret' => "5LoqUsXXXXXXXXXXXXXXXXi6zgmQ" ); $base_url = 'https://api.twitter.com/1.1/statuses/user_timeline.json'; $http_method = 'GET'; $fields = array( 'screen_name' => 'wearethegun', 'count' => '5' ); $oauth = array( 'oauth_consumer_key' => $settings['consumer_key'], 'oauth_nonce' => time(), 'oauth_signature_method' => 'HMAC-SHA1', 'oauth_token' => $settings['oauth_access_token'], 'oauth_timestamp' => time(), 'oauth_version' => '1.0' ); // todo, fields $parameters = $oauth; ksort($parameters); $base = $http_method.'&'. rawurlencode($base_url).'&'. rawurlencode(http_build_query($parameters)); $key = rawurlencode($settings['consumer_secret']).'&'. rawurlencode($settings['oauth_access_token_secret']); $signature = base64_encode(hash_hmac('sha1', $base, $key, true)); $signature = rawurlencode($signature); $oauth_header = ''; foreach ($oauth as $key => $value) { $oauth_header .= $key.'="'.$value.'", '; } $oauth_header .= 'oauth_signature="' . $signature . '"'; $curl_options = array( CURLOPT_HTTPHEADER => array("Authorization: Oauth {$oauth_header}", 'Expect:'), CURLOPT_HEADER => false, CURLOPT_URL => $base_url, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 10, ); $curl_request = curl_init(); curl_setopt_array($curl_request, $curl_options); $json_str = curl_exec($curl_request); curl_close($curl_request); $json = json_decode($json_str, true); echo "<pre>"; print_r($json); echo "</pre>"; 我不会列出所有会导致噪音的尝试。

不使用参数字段一切正常。 有人可以帮忙,我完全迷失在这里。

BitSet

0 个答案:

没有答案