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和微信
上面那个仅仅只是个例子,可能写的不是很好。大佬勿喷
有什么疑问可在帖子下方发表一下

 收藏 (8) 打赏

您入群打赏务必备注QQ号

支付宝扫一扫赞助

微信钱包扫描赞助

未经允许不得转载:5G云资源网 » PHP实现第四方QQ微信扫码登陆,不接入qq互联以及微信开发者平台

分享到: 生成海报
5G云源码网为国内各类型网站提供技术及资源服务,也让站长在这里能交流、学习、分享知识,同时缔造了一个开放的交易平台。现在已开通了站长交易、站长资讯、站长下载、站长学院、站长工具、站长论坛、站长软件等栏目,每日的访问量在3万(IP)以上(呈上升趋势),访问的用户群基本上都是各大小网站或个人主页的站长。

评论 22

评论前必须登录!

立即登录   注册

  1. #1
    avatar

    什么原理

    qq32265个月前 (04-10)国内网友谷歌浏览器 Windows 10 登录以回复
  2. #2
    avatar

    群主牛逼

    zhouyexuan5个月前 (04-10)国内网友Safari浏览器 Mac OS X 10_15_3 登录以回复
  3. #3

    怎么设置

    21115003005个月前 (04-10)国内网友QQ浏览器  Android 8.1.0 OPPO R11s Plust Build/OPM1.171019.011 登录以回复
  4. #4
    avatar

    学习了

    xls12175个月前 (04-10)国内网友谷歌浏览器 Windows 7 登录以回复
  5. #5
    avatar

    感谢分享

    32181582585个月前 (04-10)国内网友谷歌浏览器  Android 8.1.0 DRA-AL00 Build/HUAWEIDRA-AL00 登录以回复
  6. #6
    avatar

    弱弱的问一下,有成功配置的案例吗

    dorendys5个月前 (04-11)国内网友火狐浏览器 Windows 7 登录以回复
  7. #7

    然而有用吗?

    qq4494081475个月前 (04-11)国内网友谷歌浏览器 Windows 7 登录以回复
  8. #8
    avatar

    谢谢lz

    kaluli5个月前 (04-11)国内网友QQ浏览器  PAR-AL00 Build/HUAWEIPAR-AL00 登录以回复
  9. #9
    avatar

    O(∩_∩)O谢谢分享!

    asw4125个月前 (04-11)国内网友谷歌浏览器 Windows 10 登录以回复
  10. #10
    avatar

    问题是抓包安全吗?代码还没有细看

    xuanchuanpian5个月前 (04-11)国内网友谷歌浏览器 Windows 10 登录以回复
  11. #11
    avatar

    表示不会用 能有详细点说明吗

    eshao20105个月前 (04-11)国内网友谷歌浏览器 Windows 10 登录以回复
  12. #12
    avatar

    大神级楼主!!

    dmxy10135个月前 (04-11)国内网友谷歌浏览器 Windows 10 登录以回复
  13. #13
    avatar

    然而,有技术的不需要,初学者不会用,

    dudu5个月前 (04-11)国内网友QQ浏览器 Windows 7 登录以回复
  14. #14

    签到成功!签到时间:2020/4/13 上午1:52:09,每日打卡,生活更精彩哦~

    qq4494081475个月前 (04-13)国内网友谷歌浏览器 Windows 7 登录以回复
  15. #15
    avatar

    谢谢分享

    hanyu015个月前 (04-13)国内网友谷歌浏览器 Windows 7 登录以回复
  16. #16
    avatar

    签到成功!签到时间:2020/4/15 上午10:07:02,每日打卡,生活更精彩哦~

    zhenghang9115个月前 (04-15)国内网友谷歌浏览器 Windows 7 登录以回复
  17. #17
    avatar

    非常实用的分享

    bbnjl5个月前 (04-17)国内网友谷歌浏览器 Windows 7 登录以回复
  18. #18
    avatar

    签到成功!签到时间:2020/4/17 上午10:15:08,每日打卡,生活更精彩哦~

    a156553366265个月前 (04-17)国内网友谷歌浏览器 Windows 7 登录以回复
  19. #19
    avatar

    学习了,非常实用的一种途径。

    p800116095个月前 (04-18)国内网友火狐浏览器 Windows 8.1 登录以回复
  20. #20
    avatar

    O(∩_∩)O谢谢分享!

    jiaxinhao5个月前 (04-21)国内网友搜狗浏览器 Windows 10 登录以回复
  21. #21
    avatar

    看来很厉害就是不知道实战效果如何

    mingze5个月前 (04-29)国内网友谷歌浏览器 Windows 10 登录以回复
  22. #22
    avatar

    有成功测试的吗?请发下效果

    gz8184个月前 (05-10)国内网友谷歌浏览器 Windows 10 登录以回复

5G云源码 更专业 更方便

5G云主机技术QQ群
切换注册

登录

忘记密码 ?

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活