TPTCMS

ThinkPHP5整合系列之QQ互联一键登录

ThinkPHP5QQ互联2018-10-01 23:21:31

首先需要去QQ互联中心做开发者认证,审核通过后创建一个WEB应用,获取APPID和APPKey,填写好回调域名。

QQ互联中心:https://connect.qq.com/index.html

创建模板文件 如login_index.html:

<script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js" data-appid="APPID" data-redirecturi="域名/user/login.html" charset="utf-8"></script>
<script type="text/javascript">
    layui.use(['layer'], function () {
        var layer = layui.layer,
            $ = layui.jquery;
        var is_login = QC.Login.check();
        if (is_login) {
            var access_token = '';
            var openid = '';
            QC.Login.getMe(function (openId, accessToken) {
                access_token = accessToken;
                openid = openId;
            });
            var paras = { oauth_consumer_key: 'APPID', access_token: access_token, openid: openid };
            QC.api('get_user_info', paras).success(function (s) {

                //成功回调,通过s.data获取OpenAPI的返回数据
                var param = { openid: openid, username: s.data.nickname, userhead: s.data.figureurl_qq_2, sex: s.data.gender };
                $.post('{:url("index/login/loginqq")}', param, function (res) {
                    if (res.code == 200) {
                        QC.Login.signOut()//注销qq登陆
                        layer.msg(res.msg, { icon: 1, anim: 6, time: 1000 }, function () {
                            var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
                            parent.layer.close(index); //再执行关闭
                        });
                    } else {
                        layer.msg(res.msg { icon: 2 anim: 6 time: 1000 });
                    }
                });

                //alert("获取用户信息成功!当前用户昵称为:"+s.data.nickname);
            });

        } else {
            self.location.href = 'https://graph.qq.com/oauth2.0/authorize?client_id=APPID&response_type=token&scope=all&redirect_uri=' + encodeURIComponent(self.location.href);
        }
    });
</script>

创建PHP文件 如:loginqq.php

function loginqq()
{
    $member = new MemberModel();
    if (request()->isPost()) {
        $data = input('post.');
        $user = $admin->where('openid', $data['openid'])->find();
        if ($user) {
            //这里填写你需要写入的数据库
            $admin->edit($data);

        } else {
            //这里填写你需要写入的数据库
            $admin->add($data);

        }
        return json(array('code' => 200, 'msg' => '登录成功'));
    }
}

本篇文章仅用于学习研究或技术参考,请勿用于商业用途。