概述
一、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登陆功能所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复