方法:
private function get_access_token(){
$appid='your appid';
$appsecret='your appsecret';
$url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;
//$header [] = "content-type: multipart/form-data; charset=UTF-8";
$header [] = "content-type: application/json; charset=UTF-8";
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $url );
//请求的方式是post
curl_setopt ( $ch, CURLOPT_CUSTOMREQUEST, "GET" );
// 禁用后cURL将终止从服务端进行验证
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, FALSE );
//不检查证书
curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, FALSE );
//发送头部字段
curl_setopt ( $ch, CURLOPT_HTTPHEADER, $header );
//告诉对方 自己的浏览器型号
curl_setopt ( $ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)' );
//即表示自动进行跳转抓取(如果URL发生了302重定向)继续抓取
curl_setopt ( $ch, CURLOPT_FOLLOWLOCATION, 1 );
//自动重定向开启
curl_setopt ( $ch, CURLOPT_AUTOREFERER, 1 );
//发送的post参数
//curl_setopt ( $ch, CURLOPT_POSTFIELDS, $param );
//得到的结果不显示在屏幕上,作为变量结果储存
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
$res = curl_exec ( $ch );
//如果运行错误,返回一个错误号
$flat = curl_errno ( $ch );
if ($flat) {
$data = curl_error ( $ch );
}
curl_close ( $ch );
//拿到了返回结果后json格式转化为可以使用的数组格式
$res = json_decode ( $res, true );
$access_token=$res['access_token'];
return $access_token;
}
使用:
这里存到了redis,access_token有效期不超过2个小时,灵活设置就好
S(array('type' => 'redis', 'host' => '127.0.0.1', 'port' => '6379', 'prefix' => 'index', 'expire' => 86400));
if(S('access_token')){
$access_token=S('access_token');
}else{
$access_token=$this->get_access_token();
S('access_token',$access_token);
}