最新公告
  • 欢迎您光临都潮汇,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • PHP实现第四方QQ微信扫码登陆,不接入qq互联以及微信开发者平台

     

    php实现不接入鹅厂官方接口用户微信qq扫码登陆的实现

    前言:想找一个整合工具,方便自己直接拿来用。找了半天,没找到(或许搜索关键字不对)。只能自己造个轮子出来了PS:微信是直接拿论坛大佬写好了的。
    目前也就整合了下QQ微信的扫码登陆。

    自己抓的QQ包以及整合了网上一些已经封装好了的代码
    具体如下:
    QQ:

     preg_match('/qrsig=(.*?);/',$arr['header'],$match);
    if($qrsig=$match[1])
    return array('code'=>200,'qrsig'=>$qrsig,'data'=>base64_encode($arr['body']));
    else
    return array('code'=>400,'msg'=>'二维码获取失败');
    }%0s[1];
    }
    if($pskey){
    if(isset($_GET['findpwd'])){
    $_SESSION['findpwd_qq']=$uin;
    }
    return array('code'=>200,'uin'=>$uin,'skey'=>'@'.$skey[1],'pskey'=>$pskey,'superkey'=>$superkey[1],'nick'=>$r[5]);
    }else{
    return array('code'=>201,'msg'=>'登录成功,获取相关信息失败!'.$r[2]);
    }
    }elseif($r[0]==65){
    return array('code'=>400,'msg'=>'二维码已失效。');
    }elseif($r[0]==66){
    return array('code'=>202,'msg'=>'二维码未失效。');
    }elseif($r[0]==67){
    return de);
    preg_match('/redirect_uri="(.*?)"/', $body, $url);
    if ($code[0] == '200') {
    
    $body = $this->curl($url[1]);
    if (strpos($body,'1203'))
    {
    $ret['code'] = 400;
    $ret['msg'] = "短时间内不能重复进行微信登陆";
    return $ret;
    } 
    preg_match('/<wxuin>(\d*?)<\/wxuin>/', $body, $wxuin);
    $ret['code'] = 200;
    $ret['data']['uin'] = $wxuin[1];
    $ret['data']['type'] = 'wx';
    $ret['msg'] = '登录成功';
    } else {
    $ret['code'] = 408;
    $ret['msg'] = '请使用手机微信扫码登录';
    }
    return $ret;
    }
    }

    为了方便跳用,这里我又封装了一个类
    动态传入QQ微信的类名字符串快速实例化

    Tencent类:

    <?php Class Tencent{ protected $path = __DIR__ . '/'; private $cl; /* * 动态传入QQ或WX字符串,自动转换对应的api类登录 */ public function __construct($type) { //注册自动加载函数 spl_autoload_register([$this,'Psr4Autoload']); //引入curl $this->cl = new $type();
        }
        public function Psr4Autoload($class)
        {
        $class_file = $this->path .'/'. $class . '.php';
        if (file_exists($class_file))
        {
            include "$class_file";
        }else{
            die('类文件'.$class_file .'不存在');
        }
        }
        public function QRcode()
        {
            return call_user_func([$this->cl,__FUNCTION__]);
        }
        public function ListenQR(...$args)
        {
            return call_user_func([$this->cl,__FUNCTION__],$args);
        }
        public function __call($name, $arguments)
        {
           call_user_func_array([$this->cl,$name],(array)$arguments);
        }
    }

    以及最后一个curl类:

    <?php class Curl_Api { public $ua = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"; public function get_curl($url,$post=0,$referer=0,$cookie=0,$header=0,$ua=0,$nobaody=0){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); $httpheader[] = "Accept: application/json"; $httpheader[] = "Accept-Encoding: gzip,deflate,sdch"; $httpheader[] = "Accept-Language: zh-CN,zh;q=0.8"; $httpheader[] = "Connection: keep-alive"; curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader); if($post){ curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); } if($header){ curl_setopt($ch, CURLOPT_HEADER, TRUE); } if($cookie){ curl_setopt($ch, CURLOPT_COOKIE, $cookie); } if($referer){ curl_setopt($ch, CURLOPT_REFERER, $referer); } if($ua){ curl_setopt($ch, CURLOPT_USERAGENT,$ua); }else{ curl_setopt($ch, CURLOPT_USERAGENT,$this->ua);
            }
            if($nobaody){
                curl_setopt($ch, CURLOPT_NOBODY,1);
     
            }
            curl_setopt($ch, CURLOPT_TIMEOUT, 10);
            curl_setopt($ch, CURLOPT_ENCODING, "gzip");
            curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
            $ret = curl_exec($ch);
            curl_close($ch);
            return $ret;
        }
        function curl($url, $paras = array()) {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
            $httpheader[] = "Accept:*/*";
            $httpheader[] = "Accept-Encoding:gzip,deflate,sdch";
            $httpheader[] = "Accept-Language:zh-CN,zh;q=0.8";
            $httpheader[] = "Connection:close";
            curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader);
            if ($paras['ctime']) { // 连接超时
                curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, $paras['ctime']);
            }
            if ($paras['rtime']) { // 读取超时
                curl_setopt($ch, CURLOPT_TIMEOUT_MS, $paras['rtime']);
            }
            if ($paras['post']) {
                curl_setopt($ch, CURLOPT_POST, 1);
                curl_setopt($ch, CURLOPT_POSTFIELDS, $paras['post']);
            }
            if ($paras['header']) {
                curl_setopt($ch, CURLOPT_HEADER, true);
            }
            if ($paras['cookie']) {
                curl_setopt($ch, CURLOPT_COOKIE, $paras['cookie']);
            }
            if ($paras['refer']) {
                if ($paras['refer'] == 1) {
                    curl_setopt($ch, CURLOPT_REFERER, 'http://m.qzone.com/infocenter?g_f=');
                } else {
                    curl_setopt($ch, CURLOPT_REFERER, $paras['refer']);
                }
            }
            if ($paras['ua']) {
                curl_setopt($ch, CURLOPT_USERAGENT, $paras['ua']);
            } else {
                curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36");
            }
            if ($paras['nobody']) {
                curl_setopt($ch, CURLOPT_NOBODY, 1);
            }
            curl_setopt($ch, CURLOPT_ENCODING, "gzip");
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            $ret = curl_exec($ch);
            curl_close($ch);
            return $ret;
        }
         public function get_curl_split($url){
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL,$url);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt(%2件就好
    
    include "Lib/Tencent/Tencent.php";
    $wx = new Tencent("Wechat");
    $ret = $wx->QRcode();
    ?>
    <!--直接生成QR码、记得把uuid给带上-->
    <img id="wx" src="data:text/html;base64,<?=$ret['qrcode']?>" uuid="<?=$ret['uuid']?>">
     
    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>
    <script>
        // setTimeout(function () {
        //     var uuid = document.getElementById('wx').getAttribute("uuid");
        //     var url ="/ajax.php?uuid="+uuid;
        //     console.log(url);
        // },1000);
        //每秒去查询一次二维码状态
        $(document).ready(function () {
            setInterval(function () {
                var uuid = document.getElementById('wx').getAttribute("uuid");
                var url ="/ajax.php?uuid="+uuid;
                $.ajax({type:"GET",url:url,success:function (data) {
                        if (data.code == 200)
                        {
                            alert("登陆成功,uin为:"+data.uid);
                        }
                    }});
            },1000);
        });
     
    </script>

    ajax.php :

     

    <?php
    include "Lib/Tencent/Tencent.php";
    $wx = new Tencent("Wechat");
    //直接获取到uuid后,监听就好了
    $ret = $wx->ListenQR($_GET['uuid']);
    //var_dump($ret);
    echo json_encode($ret,true);exit;

    数据库用户表多一个qq和wxuin字段、用于保存用户绑定的QQ和微信
    上面那个仅仅只是个例子,可能写的不是很好。大佬勿喷
    有什么疑问可在帖子下方发表一下

     

    本网站所有源码和软件均为作者提供和网友推荐收集整理而来!
    本站提供的所有模块、软件等资源,均不提供任何技术服务,请悉知!
    如您需要商用,请支持正版,本站提供的程序仅供学习和研究使用!
    资源每天实时更新,如遇压缩包解压密码,一律为:www.dch888.cn
    如有侵犯你版权的,请来信(邮箱:68628283@qq.com)指出,本站将立即改正。
    都潮汇 » PHP实现第四方QQ微信扫码登陆,不接入qq互联以及微信开发者平台

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    都潮汇
    互联网精品资源网站源码分享平台
    升级SVIP尊享更多特权立即升级