欢迎来到php自学网~
阅读模式:

给网站添加一键qq登录的功能

查看:2245  回复:7  类型:  来源:php自学网  标签 qq开放平台

qq互联官网文档地址:

https://connect.qq.com/index.html


基本流程:

        在qq互联官网申请开发者,审核通过后创建网站应用,网站应用审核通过后会有app id 和 app key 然后所有qq账号的数据都是通过这两个去获取。

qq互联中一键有写好的demo,下载地址:http://wiki.connect.qq.com/sdk%e4%b8%8b%e8%bd%bd

都是封装好的函数,直接调用就可以实现各种功能了。


一键登录代码:

//先放置一键登录qq图片,和打开qq登录界面oa授权地址,参数回调地址
<img style="cursor: pointer;margin-top:7px;" src="qq/qq.png" alt="QQ登录" title="QQ登录" 
onclick="javascript:window.open(' 
client_id=appID&amp;redirect_uri= 
state=65c747f767&amp;scope=get_user_info','_self')" width="150">


//QQ回调地址代码:

<?php
ini_set('display_errors','on');
include_once( '../../config.php' );//引入qqDemo配置文件

//qq api开始
$code = $_GET['code'];
$state = $_GET['state'];//接收来自点击一键登录按钮后传过来的参数
if(empty($code)||empty($state)){
    echo '<script>alert("Login error !");location.href="iphp.php";</script>';
    exit;
}else{
    //通过code和state的参数获取token
    $token = file_get_contents("https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id
    =12345&client_secret=1e29c4cd120e&code=".$code."&redirect_uri="
    .urlencode('http://www.zixuephp.net/qq/index.php'));
    $token_arr = explode('&',$token);
    $token0 = explode('=',$token_arr[0]);
    if($token0){
        //通过token获取qq的唯一openid,token有生存时间
        $token0 = $token0[1];
        $openid = file_get_contents("https://graph.qq.com/oauth2.0/me?access_token=".$token0);
        $id = explode('"',$openid);
        $ids = $id[7];
        //通过openid获取qq用户信息
        $get_info = file_get_contents("https://graph.qq.com/user/get_user_info?oauth_consumer_key=
        12345&access_token={$token0}&openid={$ids}&format=json");
        $userinfo = json_decode($get_info);
        $userinfo = (array)$userinfo;

        $uid = $ids;
        $name = $userinfo['nickname'];
        $head = $userinfo['figureurl_qq_2'];
        
        //通过查询保存数据库的openid判断用户之前有没有登录过
        $res = $dbh->query("select * from user where other_id='qq_{$uid}'");
        $u = $res ->fetch();
        if($u){
            session_write_close();
            session_start();
            $_SESSION['account']=$u['account'];
            $_SESSION['uid']=$u[0];
            header("Location:iphp.php");
            exit;
        }
?>
        //如果是第一次登录则进行数据保存到数据库
        <!doctype html>
        <html>
        <head>
            <meta charset="utf-8">
            <meta http-equiv="X-UA-Compatible" content="IE-Edge"/>
            <title>QQ一键登录</title>
            <meta name="author" content="www.zixuephp.net"/>
            <meta name="copyrihgt" content="www.zixuephp.net"/>
            <meta name="keywords" content="php自学网"/>
            <meta name="description" content="php自学网www.zixuephp.net"/>
            <link rel="shortcut icon" href="../../favicon.jpg" type="image/x-icon"/>
            <link rel="stylesheet" href="../../static/css/style.css"/>
            <script type="text/javascript" src="../../static/js/jquery-1.8.3.min.js"></script>
        </head>
        <body>

        <div id="login">
            <div>
                <form method="post">
                    <p style="margin-top:15px;margin-bottom:15px;font-size:16px;">
                    ----------QQ一键登陆授权成功,信息设置----------</p>
                    <p style="margin-left:20px;margin-bottom:10px;"><span></span></p>
                    <p>邮箱设置<input type="email" name="account" placeholder="邮箱账号"/><span></span></p>
                    <p>密码设置<input type="password" name="passwd" placeholder="密码"/><span></span></p>
                    <input type="hidden" name="ou_id" value="<?php echo $uid; ?>" />
                    <input type="hidden" name="sname" value="<?php echo $name; ?>" />
                    <input type="hidden" name="head" value="<?php echo $head; ?>" />
                    <div id="set" style="margin-left:60px;">确定</div>
                </form>
            </div>
        </div>

        <script type="text/javascript">
            $('#set').click(function(){
                var email = $('input[name=account]').val();
                var pw = $('input[name=passwd]').val();
                var ou_id = $('input[name=ou_id]').val();
                var sname = $('input[name=sname]').val();
                var head = $('input[name=head]').val();
                $.ajax({
                    type:'post',
                    url:'reg_process.php',
                    data:{
                        'email':email,
                        'pw':pw,
                        'ou_id':ou_id,
                        'sname':sname,
                        'head':head
                    },
                    success:function(data){
                        if(data=='登陆成功!'){
                            $('.logintips span').text('登陆成功!3s后自动关闭窗口...');
                            setTimeout(function(){
                                window.close();
                            },3000);
                        }else{
                            $('.logintips span').text(data);
                        }
                    },error:function(){
                        $('.logintips span').text('请求出错!');
                    }

                });
            });
        </script>

        </body>
        </html>

<?php
    }else{
        echo '<script>alert("授权失败!");window.close();</script>';
        exit;
    }

}
?>


        QQ登录的优点,通过“QQ登录”,用户能使用QQ帐号一键登录接入网站,大大降低了用户注册、登录的门槛,借助庞大的QQ用户群,给第三方网站带来更多新用户。
已登录用户还可以将在第三方网站发布、分享的信息即时同步到QQ空间,使网站内容通过好友关系得到进一步的传播,从而提升网站的访问量和用户数。

        来源:QQ互联

分享到:
1 0

*有问题之处烦请在评论中指出非常感谢!
不是我想要的内容,继续搜索:

扫描二维码手机查看

最新评论:
网站/shl设计  发表于 2017-08-24 09:03:08  中国北京北京
沙发
很好 回复
网站/shl设计 回复 网站/shl设计 不错的网站。
2017-08-24 09:36 中国北京北京 回复
站长 回复 网站/shl设计 谢谢!
2017-08-25 11:08 中国广东深圳 回复
网站/shl设计 回复 网站/shl设计 真的好好学习一下
2017-08-24 09:37 中国北京北京 回复
站长 回复 网站/shl设计 互相学习呢!
2017-08-25 11:08 中国广东深圳 回复
34.  发表于 2017-09-30 16:13:29  中国广东汕头
板凳
回复
站长 回复 34.
2017-10-01 17:35 中国广东深圳 回复
回复:[主题]
表情:
 提交评论
清空

发布评论:


登录:
  表情:
评论话题
推荐阅读:
centos 7 开启网络   阅读:1634php文件下载防盗链   阅读:3202ajax+php 实现一个简单的在线聊天室功能(附带源码)   阅读:3046简单的DOS攻击之死亡之ping详解   阅读:11858php设置cookie为HttpOnly防止XSS攻击   阅读:2468shell脚本批量删除几天前的文件   阅读:2051linux php7编译安装mongodb扩展   阅读:1433mysql5.7开启sql日志的配置   阅读:1916php显示刚刚、几分钟前、几小时前、几天前的函数   阅读:1971centos 7 设置 nginx-1.11.10 开机启动   阅读:2636csv文件一键导入数据到mysql数据库   阅读:2109用php从1乘到100的值   阅读:2016web项目高并发量网站解决方案   阅读:1324html5 离线缓存的使用   阅读:1408php中地址引用&的真正理解-变量引用、函数引用、对象引用   阅读:1474centos 7 安装 mysql-5.7   阅读:2030centos 7 安装 redis 3.2.9   阅读:2452html5 离线缓存的使用   阅读:1408php打印九九加法表   阅读:1737centos 7 忘记root密码   阅读:1296知乎百万赞作者告诉你:年薪百万的人都在靠什么赚钱   阅读:1618centos 7 安装 redis 3.2.9   阅读:2452centos 7 安装 nginx-1.11.10   阅读:3203php 读取和设置redis的键值   阅读:2693php文件下载防盗链   阅读:3202人性漫画:打工与创业的残酷区别   阅读:1348csv文件一键导入数据到mysql数据库   阅读:2109ajax+php 实现一个简单的在线聊天室功能(附带源码)   阅读:3046“米粉节”背后的故事——小米网抢购系统开发实践   阅读:1240mysql5.7开启sql日志的配置   阅读:1916centos 7 开启网络   阅读:1634移动端js触摸touch详解(附带案例源码)   阅读:4445php 获取当前前后年、月、星期、日、时分秒的时间   阅读:1901栈和堆的区别   阅读:1378centos 7 设置 nginx-1.11.10 开机启动   阅读:2636web性能测试工具ab的测试方法   阅读:1453php删除一个文件夹内的所有文件夹和文件   阅读:1720php生成二维码   阅读:1853shell脚本批量删除几天前的文件   阅读:2051php生成二维码   阅读:1853centos 7 开启网络   阅读:1634linux时间戳有趣的情人节秒1234567890   阅读:1215web性能测试工具ab的测试方法   阅读:1453给网站添加一键新浪微博登录的功能   阅读:2486crontab+shell脚本实现定时备份mysql数据库   阅读:1772mysql数据库性能的基本优化   阅读:1750最简单的Banner轮播淡入淡出效果代码及实现思路(附带源码)   阅读:6030shell脚本批量删除几天前的文件   阅读:2051最简单的Banner轮播左右切换效果代码及实现思路(附带源码)   阅读:12400用php从1加到100的值   阅读:2990