PHP使用CURL请求设置header、OAuth、field等信息

  •   
  • 3534
  • PHP
  • 36
  • super_dodo
  • 2016/11/17

首先请确保你的环境开启配置了正确的curl组建。下面只是做抛砖引玉。

public function httpCurl(){

	$url = 'https://api.twitter.com/oauth/request_token';	//请求的地址
	$url_callback = 'http://www.dodobook.net/call-back';	//回调地址

	$postData = ['user_id'=>'100','user_name'=>'james'];	//传递的参数
	$fieldData = (is_array($postData)) ? http_build_query($postData) : $postData;

	$access_token = '2**************Ce';
	$oauth_nonce = md5(time());				//随机数
	$oauth_signature = 'todo_by_yourself';	//签名--请按照规则--加密方式进行生成

//  $url = 'https://www.googleapis.com/oauth2/v4/token';
	
	$curlHeaders = [
		'Host: api.twitter.com',
		"User-Agent: themattharris' HTTP Client",
		"Host: api.twitter.com",
		"Accept: */*",
		'Authorization: OAuth oauth_callback="'.$url_callback.'"',
			'oauth_consumer_key="'.$access_token.'"',
			'oauth_nonce="'.$oauth_nonce.'"',
			'oauth_signature="'.$oauth_signature.'"',
			'oauth_signature_method="HMAC-SHA1"',
			'oauth_timestamp="'.time().'"',
			'oauth_version="1.0"' 
	];

	$curl = curl_init();
	curl_setopt($curl, CURLOPT_URL, $url);
	curl_setopt($curl, CURLOPT_POST, 1);
	curl_setopt($curl, CURLOPT_HEADER, true);

	curl_setopt($curl, CURLOPT_TIMEOUT, 30);			//超时时间

	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
	curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
//    curl_setopt($curl, CURLOPT_SSLVERSION, 3);

	curl_setopt($curl, CURLOPT_HTTPHEADER, $curlHeaders);
	curl_setopt($curl, CURLOPT_POSTFIELDS, $fieldData);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

	$response = curl_exec($curl);					//得到执行返回的值
	echo curl_strerror(curl_errno($curl));			//输出错误信息
	$responseCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);	//返回提示码
	curl_close($curl);		//关闭CURL

	echo '<pre>';
	print_r($responseCode);
	echo '<hr>';
	print_r($response);
	exit();
}


此方法有待验证,也依赖于你的环境和相关的接口等。也欢迎各位提出指示信息。

每个人都会有一段异常艰难的时光,挺过去,人生豁然开朗,挺不过去,时间会教你与困难握手言和,不必害怕。