1说明:QQ开发文档给的东西很详细 但是想要配置到自己的框架中确实有点麻烦,尤其是要按照他教程中的操作来生成配置文件,比较繁琐,因此本人整理了一份自己处理过后的的官方sdk,本代码包完美结合tp5.1框架,如果用的是5.0的,引入api的路径需要做些许调整
2开始操作:
(1)在本页面下载该代码包,解压放到框架拓展目录里面如图
(2)修改配置文件,把该文件的appid,appkey,callback改成你在QQ开放中心创建的应用id,
创建应用流程:http://wiki.connect.qq.com/__trashed-2
(3)自己写一个demo页面,只要一个button按钮就行,
<head> <meta charset="UTF-8"> <title>登录页</title> </head> <body> <button onclick="toLogin()">QQ登陆</button> </body> </html> <script> function toLogin() { //以下为按钮点击事件的逻辑。注意这里要重新打开窗口 //否则后面跳转到QQ登录,授权页面时会直接缩小当前浏览器的窗口,而不是打开新窗口 childWindow = window.open("{:url('Login/QqLogin')}","TencentLogin", "width=450,height=320"); } </script>
(4)php后端操作,创建一个Login类,前端的按钮连接到QqLogin()方法
ps:
1.这里的Env::get("extend_path")是tp5.1的用法,如果框架是5.0的同学要自己改一下,只要能引入代码包中的qqConnectAPI.php就行
2.回调地址中的oauth_consumer_key要改成你自己的appid
<?php
namespace app\home\controller;
use Qqapi\api\QC;
use Qqapi\api\URL;
use think\facade\Env;
require_once(Env::get("extend_path")."/qqapi/qqConnectAPI.php");
/**
* Created by PhpStorm.
* User: pc
* Date: 2019/5/31
* Time: 11:46
*/
class Login extends \think\Controller
{
/**
* qq快捷注册登陆
*/
public function test(){
return $this->fetch();
}
//授权页面,确认授权之后会访问上面配置文件中的callback值的路径
public function QqLogin(){
$qc = new QC();
$qc->qq_login();
}
//确定授权回调操作,该方法要和配置文件中的回调地址访问的方法一致,不然会不到方法
public function callback(){
$qc = new QC();
$token = $qc->qq_callback();
$openid = $qc->get_openid();
$url = new URL();
$res = $url->get_contents("https://graph.qq.com/user/get_user_info?
access_token={$token}&oauth_consumer_key=101656836&openid={$openid}");
$info = json_decode($res,true);
dump($info);
}
}
(5)需要注意的一点是,创建应用需要域名备案,所以回调地址必须是线上的域名,在本地测试环境确定授权,回调地址可能会报错,所以建议最好是直接在线上环境去应用
(6)确定授权回调之后,下面就是打印出来的数据啦,根据你的需求把对应的数据保存到数据库,然后保存登陆标识sesstion,接着就可以return redirect('User/index');转跳到用户中心啦