位置: 编程技术 - 正文

thinkPHP5项目中实现QQ第三方登录功能(thinkphp5执行流程)

发布时间:2024-01-06

推荐整理分享thinkPHP5项目中实现QQ第三方登录功能(thinkphp5执行流程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:thinkphp项目怎么部署,thinkphp5执行流程,thinkphp5执行流程,thinkphp6项目,thinkphp项目部署,thinkphp5执行流程,thinkphp6项目,简述thinkphp项目结构,内容如对您有帮助,希望把文章链接给更多的朋友!

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

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

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

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

2. 放到tp框架里

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

可以看到里面只有三个类,我去掉了一个Recorder和一个ErrorCase类,见名知意,这两个的作用是记录一些信息,如access_token,还有异常处理,这里我就直接删掉了。另外注意,按照psr4规范,类名要跟文件名一致,所以要把文件名改一下,同时加上命名空间extendqqlogin,tp5所有的类都要有命名空间。

另外为了防止tp5找不到我们需要的文件,最好在config.php文件里注册一条根命名空间,在第行:

3. 改造源代码

因为QC.php是继承了Oauth.php,我们从后者改起,去掉require_once,加上命名空间这个就不说了,首先看成员属性,类常量是腾讯平台的地址,不用管,原来有三个属性,recorder、error不需要,注释掉或直接删掉。下文同样,要想象跟这两个单词有仇,看到就注释或删掉。

下面四个属性是需要添加的,state用于防止CSRF攻击,下面三个看官方文档就知道是什么东西了,这些原来是在comm文件夹下的inc.php存放的,现在直接拿过来变成成员属性。

thinkPHP5项目中实现QQ第三方登录功能(thinkphp5执行流程)

然后构造函数,实例化三个类,有两个已经不存在了,而且上面说了,跟这两个单词有仇,看到就要注释或删掉。

再看下面的第一个成员方法qq_login()

我们已经有仇把有那两个单词的这几行删掉了,我们又需要这些东西,不要忘了我们上面增加了三个成员属性,这些值我们已经有了下面用的时候通过$this->appid就好了。state验证的时候我们可以通过session去验证,在tp5里面提供了助手函数去写session:

最后一句是header跳转,暂不知道什么原因在tp5里面并不能看到跳转效果,于是直接将url返回,再在控制器里面通过tp5的重定向函数$this->redirect()实现跳转。

下面看qq_callback()

出现那两个单词的已经注释了,我们在qq_login里面有写session,这里直接取sessio比较就行了,input()也是tp5的助手函数,可以获得get、post请求的参数,结果是一个数组,但是不能够再动态为其添加键值对,想要添加的话必须将其赋给一个变量,再对变量进行操作。这里有错误的话直接exit打印出错误号,官方文档有详细的错误号说明。在最后也是直接将获取到的access_token写进session。

下面的get_openid()方法类似,参数列表用session构建,返回值直接写进session。

然后再修改QC.php,只需修改构造方法,把数组的三个变量给一下值就好了。

4. 控制器调用

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

切记:

在回调函数里面要实例化两次QC才能拿到用户信息,第二次实例化的时候才有openid和access_token两个参数。

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP静态延迟绑定和普通静态效率的对比 PHP静态延迟绑定和普通静态效率的对比只是一个简单的小实验,对比了下延迟绑定和非延迟的效率延迟绑定主要就是使用static关键字来替代原来的self,

Laravel 5.4因特殊字段太长导致migrations报错的解决 前言本文主要介绍了关于Laravel5.4因特殊字段太长导致migrations报错的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:lar

利用PHP获取汉字首字母并且分组排序详解 前言本文主要给大家介绍了关于PHP获取汉字首字母并分组排序的相关内容,因经常我们在做项目的时候,会有按首字母排序的需求比如:美团的城市选

标签: thinkphp5执行流程

本文链接地址:https://www.jiuchutong.com/biancheng/288288.html 转载请保留说明!

上一篇:phpStudy2016 配置多个域名期间遇到的问题小结(phpstudy安装配置)

下一篇:PHP静态延迟绑定和普通静态效率的对比(php静态缓存)

  • 降低个人税负什么意思
  • 公司注销前欠客户钱
  • 个体户每个月开10万会查吗
  • 期末留抵税额退税怎么做分录
  • 五险一金可以在手机上交吗
  • 赊销固定资产会计科目
  • 股息红利需要企业交税吗
  • 支付职工一次性补助
  • 稽查查补税款
  • 付出的房屋押金可以退吗
  • 高新研发费的账务处理怎么做?
  • 增值税零申报什么意思
  • 国税网不能打印,怎么设置
  • 剪头开发票
  • 营改增后税金由哪几项费用组成
  • 防暑降温列支什么费用
  • 天猫技术服务费什么时候返还
  • 公司还款给法人需要缴税吗
  • 已抵扣的进项税额转出怎么做会计分录
  • 个税免缴款
  • 原材料报废怎么记账
  • 花卉租赁属于哪个税目
  • 非货币性资产是无形资产吗
  • 预提费用支付是指什么
  • 动产抵押交付生效还是登记生效
  • 单位出纳的业务有哪些
  • 如何部署迫击炮
  • 应收账款未计提坏账能直接核销
  • php验证码代码怎么写
  • 微软告诉你
  • 新公司免税额度是多少
  • 企业收到分红款是免税收入吗
  • 华硕路由器登录地址
  • php可以和iis配合运行吗?
  • PHP:JDToGregorian()的用法_日历函数
  • php中imagecreatefromjpeg
  • 含税价怎么计算增值税
  • Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
  • php模板引擎原理
  • winform 文件上传
  • js倒计时函数
  • 只有销售才能使你成功的名言
  • 研发支出的主要内容
  • 小规模纳税人收普票和专票有什么区别
  • 商品售后回购分录
  • 印花税怎么计提记账
  • sql2005sp4
  • mysql如何实现高性能读写
  • 弥补以前年度亏损怎么算
  • 对外投资损失可以抵税吗
  • 社保当月没扣
  • 为什么合理损耗不计入成本
  • 商品流通企业应交那些税费
  • 电子承兑背书一般多久到账
  • 进项税可以跨年结转吗
  • 关税的计税方式一般可以分为
  • 长期挂账的其他应付款税务风险
  • 刚成立的公司没有五险一金
  • 没有什么费用
  • 管理费用明细科目设置和核算需要注意哪些问题
  • 资产减值损失是借增贷减吗
  • mysql分表实践
  • 利用MySQL统计一列中不同值的数量方法示例
  • 雨林木风 u盘
  • 老毛桃u盘启动制作工具如何把原来的win7改xp系统图文教程
  • 在u盘里装win7
  • win10 edge浏览器崩溃
  • unity 漫反射
  • 原生javascript开发
  • ftp批量下载文件命令
  • jquery常用
  • linux中使用bash是什么意思
  • jQuery progressbar通过Ajax请求实现后台进度实时功能
  • js加载3d模型
  • Android ViewPager+Fragment滑动选项卡,tab点击选项卡
  • 开票信息不一致怎么回事
  • 如何做好税收工作推动税收事业创新发展
  • 税务局2017年40号令
  • 所得税与增值税区别
  • 12366是哪里的税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号