TP5的QQ授权登录案例

本文实例讲述了thinkPHP5项目中实现QQ第三方登录功能。分享给大家供大家参考,具体如下:

最近用thinkPHP 5框架做了一个项目,在开发过程中需要用到第三方登录,腾讯官方给的案例是几个文件相互包含实现的,放到tp5里面很悲催的发现在控制器中不能通过include或者require完成预期功能,想要用腾讯官方封的类就必须对其进行修改,修改如下:

1. 找到官方SDK里面的核心文件

框架外使用的时候是include 'qqConnectAPI.php',打开这个文件可以看到它是包含了另外几个文件的,comm文件夹下的几个文件无非就是定义一些常量,记录一下你的APP KEY这些信息,都无关紧要,只要把class文件夹下的几个类文件放到tp5里面就好了,而且仔细看一下代码会发现其实只要拿到class文件夹的5个类就完全可以实现功能了。

2. 放到tp框架里

tp5推荐将第三方的东西,同时又不是composer安装的统一放到extend目录下,因为可能以后还要做其他扩展,这里将qq登录相关的单独建一个qq_connect文件夹,

可以看到里面只有五个类,另外注意,按照psr4规范,类名要跟文件名一致,所以要把文件名改一下,同时加上命名空间extend\qqlogin,tp5所有的类都要有命名空间。例如:

3. 控制器调用

改造完成,可以在控制器里面使用了,附上代码入下:

public function qqLogin(){
        $oauth = new \qq_connect\Oauth();
        $oauth->qq_login();
    }
    public function qqCallback(){
        $oauth = new \qq_connect\Oauth();
        $accesstoken = $oauth->qq_callback();
        //获取open_id

        $openid = $oauth->get_openid();
 
        //设置有效时长(7天)
        cookie('accesstoken', $accesstoken, 24*60*60*7);
        cookie('openid', $openid, 24*60*60*7);
 
        //根据accesstoken和open_id获取用户的基本信息
        $qc = new \qq_connect\QC($accesstoken,$openid);
        $userinfo = $qc->get_user_info();
        return $userinfo;
    }

猜你喜欢

转载自blog.csdn.net/j_kaixin/article/details/89277868
tp5