关于抓取access_token

来源:2-2 自定义菜单代码实现

慕尼黑3176334

2017-11-09 21:57

这里给大家一个提示,如果你的测试号验证是通过的。我对比了两种代码的使用,关于抓取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;

        }

    }

写回答 关注

1回答

  • 慕尼黑3176334
    2017-11-09 21:58:37

    亲测对比有效,可能是代码在调用http_curl函数的时候出了问题

PHP微信公众平台开发高级篇—自定义菜单

自定义菜单是微信开发中必不可少的环节,约吗?

28920 学习 · 81 问题

查看课程

相似问题