微信扫码登录代码 - 缥缈博客-个人技术博客

微信扫码登录代码

作者: 缥缈     发布于「 网站搭建 」 - 缥缈博客-个人技术博客

2020-2-21 分类: 网站搭建 评论(0)
当前位置:首页 > 网站搭建 > 正文

作者: 缥缈

个人技术博客

手机扫码查看

标签:

php代码微信

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

    <?php
    header('Access-Control-Allow-Origin:*');
    header('Content-type:application/json; charset=utf-8');
    error_reporting(0);
    date_default_timezone_set("PRC");
    !empty($_GET['type']) ? $type = $_GET['type'] : error("请求参数错误,请刷新重试!~~");
    switch ($type)
    {
        case 'Getqrcode':
            echo json_encode(getqrcode());
            break;
        case 'Getresult':
            !empty($_GET['qrsig']) ? $qrsig=$_GET['qrsig'] : error("请求参数错误,缺少qrsig~~");
            echo json_encode(getresult($qrsig),JSON_UNESCAPED_UNICODE);
            break;
        default:
            echo json_encode(getqrcode());
    }
    /**
     * 获取二维码
     */
    function getqrcode() {
        $api = 'https://login.wx2.qq.com/jslogin?appid=wx782c26e4c19acffb';
        $ret = get_curl($api);
        preg_match('/"(.*?)"/', $ret, $matches);
        $qrcode['data'] = 'https://login.weixin.qq.com/l/'.$matches[1];
        $qrcode['uuid'] = $matches[1];
        return $qrcode;
    }

    /**
     * @param $qrsig
     * @return array
     * 获取登录状态
     */
    function getresult($uuid) {
        $paras['ctime'] = 1000;
        $paras['rtime'] = 1000;
        $paras['refer'] = 'https://wx2.qq.com/';
        $api = 'https://login.wx2.qq.com/cgi-bin/mmwebwx-bin/login?loginicon=true&uuid=' . $uuid . '&tip=0';
        $body = get_curl($api, $paras);
        preg_match('/(\d){3}/', $body, $code);
        preg_match('/redirect_uri="(.*?)"/', $body, $url);
        if ($code[0] == '200') {
            $body = get_curl($url[1]);
            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;
    }

    function get_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;
    }

    function error($str){
        exit(json_encode([
            "code"=>-1,
            "msg"=>$str
        ],JSON_UNESCAPED_UNICODE));
    }
本文最后更新于2020-2-21,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
分享到:
未经允许不得转载:

作者: 缥缈, 转载或复制请以 超链接形式 并注明出处 缥缈博客-个人技术博客
原文地址: 《微信扫码登录代码》 发布于2020-2-21

评论

切换注册

登录

您也可以使用第三方帐号快捷登录

切换登录

注册

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏