Loading... # 介绍 聚合登录,就是利用用户在第三方平台上已有的账号来快速完成自己应用的登录流程。这里的第三方平台,是指QQ、微信、微博、百度等平台。通过本站的聚合登录接口,你的网站可以登录获取相应的用户信息和授权信息,例如uid、token、用户昵称、头像等。本站的聚合登录完全符合OAuth2.0身份鉴权机制。 # 正文开始 ![网站给出的文档](https://www.cdnjson.com/images/2024/03/16/QQ2024031623041269f5a585478df6ef.png) 首先先要了解一个大概的思路: 跳转登录网页->用户登录完成->返回信息->向接口请求用户信息并判断是否登录成功 大致思路有了 因此实践开始 我们先要创建两个php文件,其一为获取登录地址,其二为回调文件,当然了 你整合到一个文件也可以 这里就不做前端了 直接用后端获取地址之后直接跳转 根据文档我们可以知道 我们需要发送的信息有appid、appkey(前两个网站都有提供)、登录方式(这里以QQ为例,其他同理)、返回地址(你的回调文件地址) 我们可以用curl来获取地址并且直接跳转 ```php <?php $apiUrl = 'https://u.xiaobaixuan.com/connect.php?act=login&appid=你的appid&appkey=你的appkey&type=qq&redirect_uri=回调地址'; $curl = curl_init($apiUrl); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); $response = curl_exec($curl); if(curl_errno($curl)) { echo 'cURL error: ' . curl_error($curl); } else { curl_close($curl); $data = json_decode($response,true); $url = $data['url']; header("Location:$url"); } ?> ``` 在这里我们把获取到的信息进行了json解码并保存到数组,运用header函数跳转到这个地址 访问这个文件: ![成功跳转到登录页](https://img2.imgtp.com/2024/03/16/IbcPy7i4.png) 点击登录之后我们来看地址栏 ![请输入图片描述](https://img2.imgtp.com/2024/03/16/PECWEuXN.png) 可见返回了一个叫code的值,这串值可以通过Authorization Code获取用户信息 ![请输入图片描述](https://img2.imgtp.com/2024/03/16/qfiqkX87.png) 跟上面一步一样,直接放代码,这里我们需要根据文档来判断用户是否登录 ```php <?php $code = $_GET['code']; $apiUrl = "https://u.xiaobaixuan.com/connect.php?act=callback&appid=你的appid&appkey=你的appkey&type=qq&code=$code"; $curl = curl_init($apiUrl); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); $response = curl_exec($curl); if(curl_errno($curl)) { echo 'cURL error: ' . curl_error($curl); } else { curl_close($curl); $data = json_decode($response,true); $faceimg = $data['faceimg']; if($data['code']=="0"){ echo "登录成功,"."欢迎性别为".$data['gender']."的".$data['nickname']; echo "<img src=$faceimg>"; }else{ echo "登录失败"; } } ?> ``` 我们重新访问获取登录地址的php文件 登录成功后可见: ![请输入图片描述](https://img2.imgtp.com/2024/03/16/lgD85Bzx.png) 这里需要注意: ![请输入图片描述](https://img2.imgtp.com/2024/03/16/GPlzpuzW.png) 这个接口返回的还有很多信息,在这里用户token是非常重要的,上面没用获取,你需要将这个值保存到数据库,用户登录后需要与数据库进行对比,然后得出这个QQ对应的你网站的账号 用户uid常用于再次获取用户信息(仅限用户登录时) ![请输入图片描述](https://img2.imgtp.com/2024/03/16/wSh8augR.png) # 总结 至此,我们的功能已经全部实现了,下面你要做的就是前后端相结合以实现更进一步的操作 如有不足之处欢迎大家评论~ 最后修改:2024 年 08 月 26 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 6 如果觉得我的文章对你有用,请随意赞赏