我是靠谱客的博主 迷人黑裤,最近开发中收集的这篇文章主要介绍网站实现QQ登陆功能,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、Introduction

一般网站具有使用qq登陆到本站的功能。

二、实现步骤

1.        网站在外网且有外网域名

也就是网站上线。

首先,注册一个域名。比如,到万网注册。然后,有一台服务器。买或者租。然后,安装lamp或者ln(ningx)mp环境。在www.lnmp.org上有一键安装包。

然后将域名绑定到服务器。在注册域名的网站后台,把域名绑定到服务器的ip地址。在域名列表中,点击解析。

然后,把项目上传到服务器上。配置好apache的配置文件。注意修改项目中所有文件的权限,给它们分配可写权限chmod  –R  777  xxx/。然后,将数据库文件导入到服务器的数据库 SOURCE  /home/php/xxxx.sql。然后,修改服务器上项目的配置文件,为符合服务器实际情况的,比如数据库密码,图片文件路径等。

2.        到qq官网把网站注册进去

登陆connect.qq.com,应用管理,网站接入,申请接入,注册网站域名。

注册成功后会得到APP  ID和APP  KEY。

3.        然后下载php版的sdk

下载sdk后放到根目录。

4.        修改开发包的配置文件

comm/config.php

//申请到的appid
$_SESSION["appid"]    = 123;
//申请到的appkey
$_SESSION["appkey"]   = "hahaha";
//QQ登录成功后跳转的地址,请确保地址真实可用,否则会导致登录失败。
$_SESSION["callback"]= "http://www.haha.com/qqlogin/oauth/qq_callback.php";
//QQ授权api接口.按需调用
$_SESSION["scope"]= "get_user_info,add_share,list_album,add_album,upload_pic,add_topic,add_one_blog,add_weibo";

然后在申请注册的官网中,填上配置文件中一样的回调地址。

5.        修改登陆页面的qq图标按钮,当点击登陆时弹出qq登陆窗口,直接复制提供的示例代码

复制test_oaut2_0.html中的

childWindow =window.open("oauth/qq_login.php","TencentLogin","width=450,height=320,menubar=0,scrollbars=1,resizable=1,status=1,titlebar=0,toolbar=0,location=1");

到登陆页面的qq图标点击事件。

<dd class="qq"><ahref="javascript:void(0);" onclick='childWindow =window.open("/qqlogin/oauth/qq_login.php","TencentLogin","width=450,height=320,menubar=0,scrollbars=1,resizable=1,status=1,titlebar=0,toolbar=0,location=1");'><span></span>QQ</a></dd>

点击qq登陆按钮,弹出登陆框。在qq登陆框登陆成功后,就跳转到配置文件中配置的qq_callback.php文件。

6.        跳到qq_callback.php后

跳过去后,调用了两个函数,获取登陆的qq帐号的openid并保存到session中。openid的作用是加密。

7.        将登陆的qq的openid和网站中的登陆的帐号关联起来

qq登陆成后,在小窗口关闭前,将主窗口跳转到关联帐号的页面内。修改qq_callback.php

echo"<script>opener.location.href='/index.php/Home/Member/qqlogin';window.close();</script>";

8.        编写qqlogin方法

如果没有帐号就注册,如果有就和帐号关联。修改会员表,添加qq号字段。

/**
     * qq登陆成功后,接管登陆的qq帐号,与本站帐号关联
     */
    public function qqlogin()
    {
        //取出这个openid对应的帐号
        $memberModel = D('Admin/Member');
       $memberModel->field('username')->where(array(
            'openid' => $_SESSION['openid'],
        ))->find();
        //如果有关联帐号,直接让这个帐号登陆
        if($member)
        {
            //调用login方法让其登陆
           $memberModel->$member['username'];
            //继续使用原来的login方法,修改login方法,传判断是否需要密码的参数,在login中根据传的参数判断
            if($memberModel->login(false))
            {
                //登陆成功,跳转
                $returnUrl = U('/');//默认到首页
                //从session中取出如果有保存的跳转地址
                $ru = session('returnUrl');
                if($ru)
                {
                    session('returnUrl', null);
                    $returnUrl = $ru;
                }
                $this->success('登陆成功', $returnUrl);
                exit;
            }
            else
            {
               $this->error($memberModel->getError());
            } 
        }
        else
        {
            //如果qq号还没有关联帐号就引导用用绑定一个,修改login方法,判断登陆后session中有没有openid,有就修改这个会员id的openid字段为session中的openid,然后unset掉session中的openid。
            redirect(U('login'));
        }
    }

 

最后

以上就是迷人黑裤为你收集整理的网站实现QQ登陆功能的全部内容,希望文章能够帮你解决网站实现QQ登陆功能所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部