Twitter 推特上说;“无法验证您的身份”;当参数中有空格时
如果$searchterm=“Chinmay”,下面的代码可以很好地工作,但如果$searchterm中有空格,则无法正常工作。我尝试了很多编码,但都没有成功 第1节-获取URL和参数Twitter 推特上说;“无法验证您的身份”;当参数中有空格时,twitter,encoding,parameters,oauth,space,Twitter,Encoding,Parameters,Oauth,Space,如果$searchterm=“Chinmay”,下面的代码可以很好地工作,但如果$searchterm中有空格,则无法正常工作。我尝试了很多编码,但都没有成功 第1节-获取URL和参数 $searchterm = "Chinmay+Patel"; $params = array( "q" => $searchterm ); $url = 'https://api.twitter.com/1.1/users/search.json'; 第2节-建立签名 $o
$searchterm = "Chinmay+Patel";
$params = array( "q" => $searchterm );
$url = 'https://api.twitter.com/1.1/users/search.json';
第2节-建立签名
$oauth = array(
'oauth_consumer_key' => \Config::get("oauth-4-laravel::consumers.Twitter.client_id"),
'oauth_nonce' => hash('SHA1', time()),
'oauth_signature' => '',
'oauth_signature_method' => 'HMAC-SHA1',
'oauth_timestamp' => time(),
'oauth_token' => $this->twitter_user->access_token,
'oauth_version' => '1.0'
);
foreach ($oauth as $key => $value)
{
if (empty($value)) continue;
$oauth_vals[] = "{$key}={$value}";
}
if( !empty( $params ) ){
foreach ($params as $key => $value) {
if(empty($value)) continue;
$oauth_vals[] = "{$key}={$value}";
}
}
$base = 'GET&' . rawurlencode($url) . '&' . rawurlencode(implode('&', $oauth_vals) );// . '&'. implode( '&', $params);
$composite_key = rawurlencode(\Config::get("oauth-4-laravel::consumers.Twitter.client_secret")) . '&' . rawurlencode($this->twitter_user->secret);
$oauth_signature = base64_encode(hash_hmac('sha1', $base, $composite_key, true));
$oauth['oauth_signature'] = rawurlencode($oauth_signature);
第3节-构建请求头
foreach ($oauth as $key => $value)
{
$auth_header[] = "{$key}=\"{$value}\"";
}
$auth_header = implode(', ', $auth_header);
第4节-构建url并发出请求
if( !empty( $params ) ){
$url .= "?" . http_build_query( $params );
}
$verbose = fopen('php://temp', 'rw+');
$options = array(
CURLOPT_HTTPHEADER => array("Authorization: OAuth {$auth_header}"),
CURLOPT_HEADER => false,
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_HTTPGET => true,
// DEBUGGING
CURLOPT_VERBOSE => TRUE,
CURLOPT_STDERR => $verbose
);
$feed = curl_init();
curl_setopt_array($feed, $options);
$json = curl_exec($feed);
curl_close($feed);
$twitter_data = json_decode($json, true);
rewind($verbose);
第5节-输出数据
$verboseLog = stream_get_contents($verbose);
echo "Verbose information:\n<pre>", htmlspecialchars($verboseLog), "</pre>\n";
var_dump( $twitter_data );
$verboseLog=stream\u get\u内容($verbose);
回显“详细信息:\n”,htmlspecialchars($verboseLog),“\n”;
var_dump($twitter_数据);
可能是什么问题?有点超出了问题的范围,但是这段代码也不能处理多个参数。例如,如果我添加count参数,它会给出相同的错误