關于抓取access_token
這里給大家一個提示,如果你的測試號驗證是通過的。我對比了兩種代碼的使用,關于抓取access_token的。如果使用面向對象的方式:$this -> http_curl($url,'get','json');老師寫的http_curl函數是沒辦法抓取到json數據包的.......我也不知道為什么。而如果直接用curl寫,則可以。
function getWxAccessToken(){
? ? ? ? // if($_SESSION['accessToken'] && $_SESSION['expires_in']> time()){
? ? ? ? // ? ? echo $_SESSION['accessToken'];
? ? ? ? // ? ? return $_SESSION['accessToken'];
? ? ? ? // }else{
? ? ? ? ? ? $appid = '';
? ? ? ? ? ? $appsecret = '';
? ? ? ? ? ? $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;
? ? ? ? ? ? //2初始化
? ? ? ? $ch = curl_init();
? ? ? ? //3.設置參數
? ? ? ? curl_setopt($ch , CURLOPT_URL, $url);
? ? ? ? curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1);
? ? ? ? //4.調用接口?
? ? ? ? $res = curl_exec($ch);
? ? ? ? //5.關閉curl
? ? ? ? curl_close( $ch );
? ? ? ? if( curl_errno($ch) ){
? ? ? ? ? ? var_dump( curl_error($ch) );
? ? ? ? }
? ? ? ? $arr = json_decode($res, true);
? ? ? ? var_dump( $arr );
? ? ? ? // }
? ? }
回答那里不好寫代碼,現行的可行的代碼就放在這里了:
function http_curl($url,$type='get',$res='json',$arr=''){
? ? ? ? //1.初始化curl
? ? ? ? $ch = curl_init();
? ? ? ? //2.設置curl的參數
? ? ? ? curl_setopt($ch, CURLOPT_URL, $url);
? ? ? ? curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
? ? ? ? if($type == 'post'){
? ? ? ? ? ? curl_setopt($ch,CURLOPT_POST,1);
? ? ? ? ? ? curl_setopt($ch,CURLOPT_POSTFIELDS,$arr);
? ? ? ? }
? ? ? ? //3.采集
? ? ? ? $output = curl_exec($ch);
? ? ? ? //4.關閉
? ? ? ? curl_close($ch);
? ? ? ? if($res == 'json'){
? ? ? ? ? ? return json_decode($output,true);
? ? ? ? }
? ? }
? ? function getWxAccessToken(){
? ? ? ? if($_SESSION['accessToken'] && $_SESSION['expires_in']> time()){
? ? ? ? ? ? var_dump($_SESSION);
? ? ? ? ? ? return $_SESSION['accessToken'];
? ? ? ? }else{
? ? ? ? ? ? $appid = '';
? ? ? ? ? ? $appsecret = '';
? ? ? ? ? ? $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;
? ? ? ? ? ? // //2初始化
? ? ? ? ? ? // $ch = curl_init();
? ? ? ? ? ? // //3.設置參數
? ? ? ? ? ? // curl_setopt($ch , CURLOPT_URL, $url);
? ? ? ? ? ? // curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1);
? ? ? ? ? ? // //4.調用接口?
? ? ? ? ? ? // $res = curl_exec($ch);
? ? ? ? ? ? // //5.關閉curl
? ? ? ? ? ? // curl_close( $ch );
? ? ? ? ? ? // if( curl_errno($ch) ){
? ? ? ? ? ? // ? ? var_dump( curl_error($ch) );
? ? ? ? ? ? // }
? ? ? ? ? ? // $arr = json_decode($res, true);
? ? ? ? ? ? $arr = $this -> http_curl($url,'get','json');
? ? ? ? ? ? $accessToken = $arr['access_token'];
? ? ? ? ? ? $_SESSION['accessToken'] = $accessToken;
? ? ? ? ? ? $_SESSION['expires_in'] = time()+7200;
? ? ? ? ? ? var_dump($_SESSION);
? ? ? ? ? ? return $accessToken;
? ? ? ? }
? ? }
2017-11-09
親測對比有效,可能是代碼在調用http_curl函數的時候出了問題