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

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

查看:2493  回复: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 中国广东深圳 回复
回复:[主题]
表情:
 提交评论
清空

发布评论:


登录:
  表情:
评论话题
推荐阅读:
一步步带你,如何网站架构   阅读:1480mysql中文分词全文搜索索引讯搜的安装   阅读:1919霍金24岁博士毕业论文在线预览   阅读:1559centos 7 修改系统屏幕分辨率   阅读:16351php 生成图片,给图片加水印   阅读:2443最简单的Banner轮播左右切换效果代码及实现思路(附带源码)   阅读:13772nginx编译安装后对nginx进行平滑升级   阅读:528php 获取当前前后年、月、星期、日、时分秒的时间   阅读:2006web项目高并发量网站解决方案   阅读:1445centos 7 安装 php-7.1.3   阅读:8432session与cookie的区别   阅读:1607php打印九九加法表   阅读:2083ajax+php 实现一个简单的在线聊天室功能(附带源码)   阅读:3286centos 7 开启网络   阅读:1773霍金24岁博士毕业论文在线预览   阅读:1559html5 离线缓存的使用   阅读:1537给网站添加一键新浪微博登录的功能   阅读:2634php 使用 smtp.php 类在线发送邮件功能   阅读:2063csv文件一键导入数据到mysql数据库   阅读:2276phpexcel 超简单从数据库一键导出数据到excel教程   阅读:2449爱编程,也爱健康   阅读:1175mysql共享锁和排他锁详解   阅读:2014centos 7.2 添加php7 的 php-fpm 开机启动   阅读:9422mysql共享锁和排他锁详解   阅读:2014php 使用 smtp.php 类在线发送邮件功能   阅读:2063php删除一个文件夹内的所有文件夹和文件   阅读:1946用php从1乘到100的值   阅读:2205centos 7 开启网络   阅读:1773centos 7 忘记root密码   阅读:1398纯干货,程序员面试的超实用技巧   阅读:1389人性漫画:打工与创业的残酷区别   阅读:1478最新centos7 搭建LNMP环境(centos7.2+php7+mysql5.7+nginx1.11+redis3.2)   阅读:4436csv文件一键导入数据到mysql数据库   阅读:2276浅谈javascript的函数节流   阅读:1501十张GIF让你弄懂递归等概念   阅读:1846mysql5.7开启sql日志的配置   阅读:2168php压缩页面的html代码一行显示   阅读:2270web性能测试工具ab的测试方法   阅读:1580php压缩页面的html代码一行显示   阅读:2270小米手机端商城rem适配原理   阅读:3042简单的DOS攻击之死亡之ping详解   阅读:13459php 生成图片,给图片加水印   阅读:2443php打印九九加法表   阅读:2083比phpexcel还要简单的excel CSV 一键导入数据到数据库   阅读:1975mysql的四种索引类型   阅读:3627程序员找工作三要素(必看)   阅读:1764解决 nginx 413 request entity too large   阅读:1440最简单的Banner轮播淡入淡出效果代码及实现思路(附带源码)   阅读:6515把php session 会话保存到redis   阅读:2426PHP 鸟哥:我也曾经是“不适合”编程的人   阅读:2896