Loading... ## 前言 * 相信很多小伙伴想给自己的网站接入QQ登录使自己登录更为方便,今天来教大家如何给网站接入QQ登录 ## 准备材料 1. 国内备案服务器 2. 国内备案域名 3. 你的QQ 4. 你的正面手持身份证图片 ## 申请QQ登录权限 * 首先我们先访问[QQ互联(点击可快速访问)](https://connect.qq.com/index.html) * 登录完成后,点击上方应用管理进入页面 * 然后点击你的头像进入页面,填写好相关信息等待审核(<span style='color:Red'>审核要一天左右时间,有时候很快会处理你的资料</span> ) ## 创建应用 * 回到应用管理页面,点击创建应用,在弹出页面选择创建网站应用 * 接着填写相关信息,网站类型一般选其他,网站名称填写需和你备案时的网站名称一样 * 点击确认后转到这个界面,网站地址填你要用QQ登录的网址,回调地址填到你要登录的页面的目录下,再加/qqlogin.php 例如我要用auth.autive.cn进行QQ登录,登录页面在auth.autive.cn/user/login.php 那这个回调地址就填auth.autive.cn/user/qqlogin.php 提供方可以随意,然后再把备案号填完就行 图标也要上传,然后等待审核(也是一到两天) * 然后记录你的APP ID和APP Key,在你的登录页面加上QQ登录的按钮然后指向回调域 ## 网站方面 * 首先你得清楚你的站点如何调用用户数据库的方法,例如我的站使用$AT调用数据库方法调用用户的资料 * 在你的数据库用户表里面,添加字段Openid,类型选择longtext 然后点击确定即可(推荐使用phpMyAdmin)就像图片这样 * 接下来上qqlogin.php的代码 ```php <?php include '../includes/config.php';//这里你加载你网站程序的运行文件 //应用的APPID $app_id = "你的APPID"; //应用的APPKEY $app_secret = "你的APPKEY"; //【成功授权】后的回调地址,即此地址在腾讯的信息中有储存 $my_url = "你填写的回调地址"; //Step1:获取Authorization Code session_start(); $code = $_REQUEST["code"];//存放Authorization Code if(empty($code)) { //state参数用于防止CSRF攻击,成功授权后回调时会原样带回 $_SESSION['state'] = md5(uniqid(rand(), TRUE)); //拼接URL $dialog_url = "https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url) . "&state=" . $_SESSION['state']; if(isset($_GET['user'])){ $dialog_url = "https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url) . "?user=".$_GET['user']."&state=" . $_SESSION['state']; } echo("<script> top.location.href='" . $dialog_url . "'</script>"); } //Step2:通过Authorization Code获取Access Token if($_REQUEST['state'] == $_SESSION['state'] || 1) { //拼接URL $token_url = "https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&" . "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url) . "&client_secret=" . $app_secret . "&code=" . $code; $response = file_get_contents($token_url); if (strpos($response, "callback") !== false)//如果登录用户临时改变主意取消了,返回true!==false,否则执行step3 { $lpos = strpos($response, "("); $rpos = strrpos($response, ")"); $response = substr($response, $lpos + 1, $rpos - $lpos -1); $msg = json_decode($response); if (isset($msg->error)) { echo "<h3>error:</h3>" . $msg->error; echo "<h3>msg :</h3>" . $msg->error_description; exit; } } //Step3:使用Access Token来获取用户的OpenID $params = array(); parse_str($response, $params);//把传回来的数据参数变量化 $graph_url = "https://graph.qq.com/oauth2.0/me?access_token=".$params['access_token']; $str = file_get_contents($graph_url); if (strpos($str, "callback") !== false) { $lpos = strpos($str, "("); $rpos = strrpos($str, ")"); $str = substr($str, $lpos + 1, $rpos - $lpos -1); } $user = json_decode($str);//存放返回的数据 client_id ,openid if (isset($user->error)) { echo "<h3>error:</h3>" . $user->error; echo "<h3>msg :</h3>" . $user->error_description; exit; } if(isset($_GET['user'])){//这个if是我用来绑定Openid的,可以根据自己所需编写 $AT->query("UPDATE `act_user` SET `Openid` = '".$user->openid."' WHERE `Uid` = ".$_GET['user']); exit ('<script>alert("绑定成功!");window.location.href = "./system.php";</script>'); } //echo("Hello " . $user->openid); //echo("Hello " . $params['access_token']); //Step4:使用<span >openid,</span><span >access_token来获取所接受的用户信息。</span> $user_data_url = "https://graph.qq.com/user/get_user_info?access_token={$params['access_token']}&oauth_consumer_key={$app_id}&openid={$user->openid}&format=json"; $user_data = file_get_contents($user_data_url);//此为获取到的user信息 $return = $AT->get_row("SELECT * FROM act_user where Openid = '".$user->openid."'");//这一块代码根据自己需要编写 if(!$return){ echo '<script>alert("授权站无此用户!");window.location.href = "./login.php";</script>'; }else{ setcookie("ACTuser",$return['token'],time() + 3600); echo '<script>alert("登录成功!");window.location.href = "./index.php";</script>'; } } else { echo("The state does not match. You may be a victim of CSRF."); } ?> ``` ## 结尾 * 整个QQ登录还是没那么容易的(我当时一脸懵逼在那修修改改) * 实用的话,请东东小手转发下呗(写的那么详细了诶) * 如果实在不会的请留下你的联系方式,可以免费帮你接入哦! 最后修改:2021 年 07 月 19 日 06 : 02 PM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 微信
1 条评论
有没有微信的登陆教程