php生成小程序二维码出现40001的情况

php生成小程序二维码出现40001的情况

获取二维码时,小程序的access_token莫名奇妙失效了?
生成小程序二维码时遇到的坑,明明刚获取到的access_token,生成二维码时总是提示说 "errcode: 40001, errmsg: “invalid credential, access_token is invalid or not latest hint: [IUwBwa07644522]”。这个access_token时灵时不灵

不废话,直接说解决方案
出现获取小程序二维码经常失败偶尔成功或者偶尔失败的情况,并提示40001。这个很大程度上是因为你的程序中有多个地方使用了获取access_token的方法 会失效是其它地方刷新了assess_token导致在当前页面刷新时和另一个地方冲突,导致token失效
解决方式就是将获取access_token的方法统一管理,这样将不会存在冲突

附上本人生成二维码的部分代码(使用tp5.1框架)

/**
     * @descr 得到小程序二维码
     */
    public function getQrCode(){

        header('content-type:text/html;charset=utf-8');

        if (Session::get('access_token')){
            $token=Session::get('access_token');
        }else{
            $token = access_token();
        }

        $qcode ="https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=".$token."";
        $param = json_encode([
            //"scene"=>"uid=".$this->app['userID'],
            "scene"=>"uid=21",
            "path"=>"pages/active-receive/index",
            //"width"=> 430
        ]);

        $result = Common::httpRequest($qcode,$param,"POST");
        //file_put_contents("qrcode.png", $result);
        $base64_image ="data:image/jpeg;base64,".base64_encode($result);

        return  $base64_image;
    }


function access_token(){
    $config = Config('weChat.');
    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=". $config['WX_APPID']."&secret=".$config['WX_SECRET']."";
    $json = \tool\Common::httpRequest($url);
    $json = json_decode($json,true);
    Session::set('access_token',$json['access_token'],7200);
    return $json['access_token'];
}


//curl
    public static function httpRequest($url, $data='', $method='GET'){

        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
        if($method=='POST')
        {
            curl_setopt($curl, CURLOPT_POST, 1);
            if ($data != '')
            {
                curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
            }
        }

        curl_setopt($curl, CURLOPT_TIMEOUT, 30);
        curl_setopt($curl, CURLOPT_HEADER, 0);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $result = curl_exec($curl);
        curl_close($curl);
        return $result;
    }

分享一下自己的采坑经历,目的是为了大家不再重复我的错误。
写的不好,请大家不要介意,谢谢

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值