qq一键登入功能对于大多数小中型网站来说是十分必要的,因为他给你的用户带来了极大的方便,但是想要集成网站的qq一键登入功能,你必须要一些编程基础,使网站和qq登入的应用之间进行一些必要的交互,下面我简单的介绍下具体的流程。
1.访问网址qq互联平台http://connect.qq.com,使用任意qq帐号登入
2.管理中心菜单中开始创建一个应用,以便你的网站和域名能够合法使用该功能。
3.选择创建网站应用,然后填写选项
如果没有什么问题,点击创建应用按钮即可提交,接下来你会看到你的提交进入未审核状态
得到提示:您还有1款未审核应用,尽快完善接入平台资料并提交上线申请,三个月内未上线会被平台清除,APPID被收回
现在就可以开始开发,等开发流程好了后,去申请审核,大约1-3天内即可正常使用了
访问网址http://wiki.connect.qq.com/
查看开发文档,重要内容如下
从文档中可以看到,首先放置“QQ登录”按钮,就是在你的网站放一个qq图标,但是需要有一个链接,你可以在你的网站建一个php文件,比如qqlogin.php,qq图标的链接是http://yourdoamin.com/qqlogin.php?c=login, 为什么要这样写,是为了一个页面处理多个请求,下面看下代码:
PHP文件:qqlogin.php
你的域名表示为:http://yourdoamin.com
switch ($_GET['a'])
{
case 'login';
$_SESSION['state']=time();
$url="https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=xxxxx&redirect_uri=http://www.yourdomain/qqlogin.php?a=callback&state=".$_SESSION['state']."&scope=get_user_info";
redirect($url, $delay =0,$js = false,$jsWrapped = true, $return = false);
break;
case 'callback';
$code=addslashes($_GET['code']);
$state=addslashes($_GET['state']);
//防止xss跨站攻击
if(($code=='') or ($state<>$_SESSION['state']))
{
exit('err,please back');
}
$url='https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=xxxxx&client_secret=xxxxx&code='.$code.'&redirect_uri=http://www.yourdomain/qqlogin.php?a=callback';
//redirect($url, $delay =0,$js = false,$jsWrapped = true, $return = false);
$access_token=vita_get_url_content($url);
if ($access_token)
{
$url='https://graph.qq.com/oauth2.0/me?'.$access_token;
$callback=vita_get_url_content($url);
if ($callback)
{
$content=str_replace('callback(',"",$callback);
$content=str_replace(');',"",$content);
$content=json_decode($content);
$client_id=$content->client_id;
//判断是否合法
if ($client_id=='xxxxx')
{
$openid=$content->openid;
//此处省略db操作,你可以使用$openid去你自己数据库查有没这个用户唯一标识,没有就去插入,如果需要用户昵称等资料可以调用接口https://graph.qq.com/user/get_user_info实现代码如下
$url="https://graph.qq.com/user/get_user_info?".$access_token."&oauth_consumer_key=xxxxx&openid=".$openid."";
$userinfo=vita_get_url_content($url);
$userinfo=json_decode($userinfo);
$nickname=$userinfo->nickname;
// 然后赋值session执行登入
redirect('http://www.yourdomain.com', $delay =0,$js = false,$jsWrapped = true, $return = false);exit;
}
}
}
exit('time out');
break;
default:
}
//自定义跳转函数
function redirect($url, $delay = 0, $js = false, $jsWrapped = true, $return = false)
{
$delay = (int)$delay;
if (!$js) {
if (headers_sent() || $delay > 0) {
echo'
<html>
<head>
<meta http-equiv="refresh" content="'.$delay.';URL='.$url.'" />
</head>
</html>';
exit;
} else {
header("Location:".$url."");
exit;
}
}
$out = '';
if ($jsWrapped) {
$out .= '<script language="JavaScript" type="text/javascript">';
}
$url = rawurlencode($url);
if ($delay > 0) {
$out .= "window.setTimeOut(function () { document.location='{$url}'; }, {$delay});";
} else {
$out .= "document.location='{$url}';";
}
if ($jsWrapped) {
$out .= '
}
if ($return) {
return $out;
}
echo $out;
exit;
}
以下就是登入窗口,接口差不多了,是不是很简单
本文章转载自:php使用QQ一键登入第三方网站