php网站 qq登陆,PHP QQ一键登入网站实现过程

qq一键登入功能对于大多数小中型网站来说是十分必要的,因为他给你的用户带来了极大的方便,但是想要集成网站的qq一键登入功能,你必须要一些编程基础,使网站和qq登入的应用之间进行一些必要的交互,下面我简单的介绍下具体的流程。

1.访问网址qq互联平台http://connect.qq.com,使用任意qq帐号登入

2.管理中心菜单中开始创建一个应用,以便你的网站和域名能够合法使用该功能。

0818b9ca8b590ca3270a3433284dd417.png

3.选择创建网站应用,然后填写选项

0818b9ca8b590ca3270a3433284dd417.png

如果没有什么问题,点击创建应用按钮即可提交,接下来你会看到你的提交进入未审核状态

得到提示:您还有1款未审核应用,尽快完善接入平台资料并提交上线申请,三个月内未上线会被平台清除,APPID被收回

0818b9ca8b590ca3270a3433284dd417.png

现在就可以开始开发,等开发流程好了后,去申请审核,大约1-3天内即可正常使用了

访问网址http://wiki.connect.qq.com/

查看开发文档,重要内容如下

0818b9ca8b590ca3270a3433284dd417.png

从文档中可以看到,首先放置“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'

';

exit;

} else {

header("Location:".$url."");

exit;

}

}

$out = '';

if ($jsWrapped) {

$out .= '

}

$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;

}

loading.png

以下就是登入窗口,接口差不多了,是不是很简单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值