Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >QQ扫码登陆详解 - 可做登陆或者授权程序下载

QQ扫码登陆详解 - 可做登陆或者授权程序下载

作者头像
骤雨重山
发布于 2022-01-17 03:31:21
发布于 2022-01-17 03:31:21
2.1K04
代码可运行
举报
文章被收录于专栏:骤雨重山骤雨重山
运行总次数:4
代码可运行

网站可以用QQ快速登录,PHP获取QQ信息,获取QQSkey等,自行使用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?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() {
    $qrcode = array();
    $api = 'https://ssl.ptlogin2.qq.com/ptqrshow?appid=549000912&e=2&l=M&s=3&d=72&v=7&t=0.1415855' . time();
    $paras['header'] = 1;
    $ret = get_curl($api, $paras);
    preg_match('/qrsig=(.*?);/', $ret, $matches);
    preg_match_all('/ (\d){3}/', $ret, $Conlen);
    $arr = explode('com;', $ret);
    $qrcode['qrsig'] = $matches[1];
    $qrcode['data'] = base64_encode(trim($arr['1']));
    return $qrcode;
}

/**
 * @param $qrsig
 * @return array
 * 获取登录状态
 */
function getresult($qrsig) {
    $ret = array();
    $api = 'https://ssl.ptlogin2.qq.com/ptqrlogin?u1=' . urlencode('https://qzs.qzone.qq.com/') . '&ptqrtoken=' . getqrtoken($qrsig) . '&ptredirect=0&h=1&t=1&g=1&from_ui=1&ptlang=2052&action=0-1-' . time() . '&js_ver=90220&js_type=1&login_sig=&pt_uistyle=40&aid=549000912&daid=5&has_onekey=1';
    $paras['cookie'] = 'qrsig=' . $qrsig . ';';
    $body = get_curl($api, $paras);
    if (preg_match("/ptuiCB\('(.*?)'\)/", $body, $arr)) {
        $r = explode("','", str_replace("', '", "','", $arr[1]));
        if ($r[0] == 0) {
            preg_match('/uin=(\d+)&/', $body, $uin);
            $ret['code'] = 1;
            $ret['data']['uin'] = $uin[1];
            $ret['msg'] = 'QQ登录成功';
        } elseif ($r[0] == 65) {
            $ret['msg'] = '登录二维码已失效,请刷新重试!';
        } elseif ($r[0] == 66) {
            $ret['msg'] = '请使用手机QQ扫码登录';
        } elseif ($r[0] == 67) {
            $ret['msg'] = '正在验证二维码...';
        } else {
            $ret['msg'] = '未知错误001,请刷新重试!';
        }
    } else {
        $ret['msg'] = '未知错误002,请刷新重试!';
    }
    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;
}


/** QQ空间Token算法*/
function getqrtoken($qrsig) {
    $len = strlen($qrsig);
    $hash = 0;
    for ($i = 0; $i < $len; $i++) {
        $hash += (($hash << 5) & 2147483647) + ord($qrsig[$i]) & 2147483647;
        $hash &= 2147483647;
    }
    return $hash & 2147483647;
}

function error($str){
    exit(json_encode([
        "code"=>-1,
        "msg"=>$str
    ],JSON_UNESCAPED_UNICODE));
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-03-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
微信扫码登录详解 - 可做登录授权等
可用作微信扫码登录,扫码授权等,自行使用。 <?php header('Access-Control-Allow-Origin:*'); header('Content-type:applicatio
骤雨重山
2022/01/17
2K1
QQ扫码快捷登陆
借鉴了彩虹,云青大佬的代码研究了一下做出来了自己的QQ扫码登陆并接入到网站话不多说
九霄道长
2021/03/02
3.3K0
获取QQ头像外链的加密URL
Qicloud-W
2023/11/17
3800
QQ二维码登录API源码
<?php error_reporting(0); header('content-type:application/json'); function request_http($ur
小新哟
2020/09/23
1.5K0
历史上的今天(百度百科)完整接口源码
利用百度百科历史上的今天数据接口编写了一个自用接口。 源码如下: <?php //允许跨域 header("Access-Control-Allow-Origin:*"); $month=date
王图思睿
2021/06/15
8110
最新抖音无水印解析源码(仅供学习参考)
前言: 网上流传了好多抖音视频无水印的解析接口,但源码很少,能用的源码更是寥寥,在此,博主分享一篇博主用的感觉还不错的源码分享一下,下面是PHP源码 - 只提供解析原理,要做接口的自行封装一下。 直接
骤雨重山
2022/01/17
2.5K0
最新抖音无水印解析源码(仅供学习参考)
获取lofter官方首页背景壁纸
这个小姐姐挺好看的!磨皮不错! 今天看到lofter的首页壁纸特别好看! 然后准备偷偷接口,最后发现他的接口是dwr的 没办法,处理一下,命令如下 获取lofter壁纸的地址,存到数组里面,剩下的
墨渊
2018/06/09
1.4K0
PHP官方API提供ck获取对方Q等级接口源码
提供ck可以免密查对方Q等级 只写了查等级 别的资料 你们需要写上或找我加上 分享分享思路。。。
用户8099761
2023/05/11
7400
获取QQ头像外链的加密URL
class Api { public static function get_curl($url,$header = 0, $ua = 0, $nobaody = 0) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_TIMEOUT, 60); curl_setopt($ch, CURLOPT_SSL_VERIF
Qicloud
2022/01/27
1.1K0
【笔记】PHP封装的不错的一个Curl方法
温馨提示:本文最后更新于2022-03-07,若文件或内容有错误或已失效,请在下方留言。
NorthS
2023/03/21
5130
抖音背景音乐获取API
有时候看到好看的抖音,听到喜欢听的背景音乐但音乐却没有在音乐软件上架怎么办?下面代码直接实现。
qiangzai
2021/12/21
2.2K0
抖音背景音乐获取API
PHP实现百度收录判断
代码如下: <?php $sl_url = (isset($_GET['url']))?$_GET['url']:$_POST['url']; if(empty($sl_url)) echo '查询
今天风真的好大好大啊
2022/04/02
1.2K0
微信小程序之生成指定页面的太阳码
最近的项目中也是需要生成小程序的邀请太阳码.一开始生成的是个二维码.但是小程序的客户扫了之后总不能让人家跳到H5页面.所以也是研究了一下.一路上也是坎坎坷坷.这里总结下.顺当分享下自己写的代码.哪里写的不好.多多指教下.
桑先生
2019/12/18
8.9K0
微云网盘php解析源码_更新
作者:matrix 被围观: 13,244 次 发布时间:2014-01-06 分类:零零星星 | 142 条评论 »
HHTjim 部落格
2022/09/26
6.5K0
php一句话木马深度解析
一句话木马短小精悍,而且功能强大,隐蔽性非常好,在入侵中始终扮演着强大的作用。我们可以利用一句话木马来对主机进行渗透操作,最常见的工具就是号称黑客之刃的中国菜刀。这里我们主要讲解php一句话木马,因为别的语言我也不会啊。
用砖头敲代码
2022/06/06
4.1K0
微云网盘外链php源码
作者:matrix 被围观: 154,090 次 发布时间:2013-10-26 分类:兼容并蓄 零零星星 | 16 条评论 »
HHTjim 部落格
2022/09/26
2.9K0
微云网盘外链php源码
北京地铁某站点自动预约入站源码php
因之前在沙河住着,但是每天上班进地铁要排队,然而地铁有预约功能,但是根本就抢不到,估计沙河居住的IT大佬有点多,都是高科技预约的,所以就研究了一下,挂在软件上可设置定时自动预约。 目前支持预约站点:
纯情
2023/04/27
5620
北京地铁某站点自动预约入站源码php
URL scheme实现携带数据打开小程序
我这里做一个快速的整理思路: 1、鉴权调用接口凭证(access_token) 2、 HTTPS 调用 POST 请求地址:
德宏大魔王
2023/08/08
7140
URL scheme实现携带数据打开小程序
自动获取ICP备案号接口源码
每一个备案的网站在建立后都要在网站底部放上自己的ICP备案号,并链接到 ICP/IP地址/域名信息备案管理系统 官网。
岳泽以
2022/10/26
5.2K0
自动获取ICP备案号接口源码
PHP开发之微信H5支付
最近由于业务所需,对接了微信H5支付,然而微信支付对这块并没有现成的demo可用,所以就必须自己老老实实对照开发文档去写咯!但这对于刚接触的童鞋来说,坑多多少少还是有的,所以寻思着把自己的经验分享出来,毕竟现成的用的还是多巴适的嘛!
用户2619822
2022/06/10
8370
相关推荐
微信扫码登录详解 - 可做登录授权等
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验