UCenter API 开发笔记——UCenter与ThinkPHP5.1 整合
一、前言:
因为移动互联网的迅速发展,各大互联网厂商都推出了小程序,再加上原有的APP、web等项目,用户数据被严重割裂。为了统一用户数据、优化用户体验:实现一个账号多平台登录、数据互通,迫切需要一个用户中心来管理各平台的用户。又因为平台用户数不多,且有discuz背景,所以用ThinkPHP整合十年前的UCenter
,引出各种用户操作的API,就成了最佳选择。
而笔者在查找资料时,大多是thinkphp3.2与UCenter的整合文章,且描述的不是很清楚,故写此文记录合并过程,希望可以对有相同需求的人提供一点帮助。
二、UCenter 的基本功能
- 账号管理:包括注册、登录、删除、修改用户信息(密码、邮箱等)
- 头像管理:上传、删除,生成调用头像的链接,头像类别(真实头像、虚拟头像两种)
注:UCenter开发文档上没说
真实头像
和虚拟头像
的区别,笔者姑且认为虚拟头像
就是我们平时的头像,而真实头像
就是用户个人的照片。
- 短消息管理:发送、删除短消息等。
注:本功能
优点
是可以实现用户跨平台交流,缺点
是不能向IM(即时通讯软件)
那样快速,而且原生不支持发送图片等媒体消息。
- 好友管理:添加、删除好友,获取好友列表等
- 其他功能:应用接口、积分接口、标签接口、事件接口和邮箱接口等不在本次开发范围之列,故不做讨论。
UCenter开发文档
三、准备工作
安装
ThinkPHP5.1
安装步骤详见 ThinkPHP5.1完全开发手册
下载GitHub上
@hyperzlib
的 thinkphp5 UCenter 接口一个
UCenter
- 安装方法及兼容PHP7网上有很多教程,这里就不赘述了
- 笔者以discuz x3.4自带的UCenter为例,独立的UCenter整合方法也一样
四、整合
4.1 UCenter 中添加应用程序
点击首页
应用管理
进入应用管理界面
点击
添加新应用
开始添加应用
开始添加应用
- 安装方式:自定义安装
- 应用类型:其他
- 应用名称:你的应用名称
- 应用主URL:暂时写要整合的thinkphp站点的域名(稍后会修改)
- 应用ip:一般不填
- 通信密钥:可不填(不填会自动生成)
- 是否开启同步登录:是
- 是否接受通知:是
- 其他选项默认即可
- 点击
提交
添加成功
4.2 整合 ThinkPHP5.1 与 GitHub 的代码
将下载的代码中的UCenter目录复制到thinkphp的扩展目录extend目录下
修改配置文件
进入
UCenter
->应用管理
->刚刚添加的那一项应用
->编辑
复制配置信息
将配置信息粘贴到
thinkphp根目录/extend/UCenter/config.php
中覆盖保存
thinkphp 中新建一个模块准备和UCenter通信
新建一个控制器
php think make:controller [模块名称]/[控制器名称]
笔者创建的模块是
uc
控制器名称是UCenter
创建一个模型
php think make:model [模块名称]/[模型名称]
笔者使用的模块是
uc
模型名称是UCenter
修改新创建的控制器和模型
修改新创建的控制器
控制器继承
UCenter\Controller\ApiController
类覆盖公共属性
$eventListener
public $eventListener = [刚刚创建的模型];
修改新创建的模型
继承UCenter\Model\EventModel
类
配置路由
开启系统强制路由
打开thinkphp根目录/config/app.php
// 将 'url_lazy_route' => false, // 改为 'url_lazy_route' => true,
本步骤不是必须执行,只是为了系统安全而配置,
为 UCenter能与thinkphp通信配置访问路由
打开文件thinkphp根目录/route/route.php
新增一条路由信息// 新增一条路由信息 Route::get('uc', 'uc/UCenter/uc');
修改下载的代码使之兼容thinkphp5.1
修改文件
tinkphp根目录/extend/UCenter/Controller/ApiController.php
将第五行use think\App;
改为use think\facade\Log;
thinkphp5.1取消了静态方法,故采用facade兼容
修改文件
tinkphp根目录/extend/UCenter/Controller/UcController.php
将命名空间改为
UCenter\Controller
将类的继承由
BaseController
改为Controller
这部分应该是作者没有改 tp3.2版本的代码,直接搬过去,从而没有做对tp5版本的兼容
修改文件
tinkphp根目录/extend/UCenter/Api.php
- 在14行添加
require_once(__DIR__.'/config.php');
- 将16行处
E('未发现ucnter配置文件');
改为exception('未发现ucnter配置文件');
- 在14行添加
> tp5抛弃了tp3.2的单字母助手函数,所以要作此修改来兼容tp5.1
4.3 修改UCenter应用信息
因为在创建应用时thinkphp并没有配置完成,也没有路由信息,所以现在要编辑UCenter对应的应用,来确保应用和UCenter通信成功从而完成整合。
应用主URL改为
应用域名/index.php/uc
- index.php若已配置隐藏,则可不用写
- uc 为笔者在 4.2 -> 5. 处配置的路由信息,可替换为自己的配置
应用接口文件名称 由
uc.php
改为uc
五、整合完成
返回应用列表,发现通信成功,至此,UCenter 与 ThinkPHP5.1整合完成
六、后记
本文仅描述了UCenter与ThinkPHP5.1的整合过程,最终实现了通信成功。其中,笔者创建的uc模块仅为应用与UCenter通信使用。若读者要参照UCenter开发手册,对UCenter进行开发,则需要新建模块、控制器,使其继承 thinkphp根目录/extend/Controller/UcController.php
进行开发。
如果本文对您有用或有意见建议,欢迎点赞、留言~
UCenter API 开发笔记——UCenter与ThinkPHP5.1 整合相关推荐
- U8C推拉单API开发笔记
U8C资料 开发文档 API中心 发布自定义API 于系统信息设置节点,注册外系统信息 新增API实体类,该类需要实现IAPICustmerDevelop接口 打开postman,设置请求头,调用接口 ...
- baidumap api MySQL_百度地图API开发笔记一(基础篇)
什么是百度地图API? 百度地图API是一套由JavaScript语言编写的应用程序接口,它能够帮助您在网站中构建功能丰富.交互性强的地图应用.百度地图API包含了构建地图基本功能的各种接口,提供了诸 ...
- [置顶] 【Visual C++】游戏开发笔记之一——API函数、DirectX的关键系统...
本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7318264 作者:毛星云 邮箱: h ...
- 5. 深入研究 UCenter API 之 MVC 网站下的用法(转载)
1. 深入研究 UCenter API 之 开篇 (转载) 2. 深入研究 UCenter API 之 通讯原理(转载) 3. 深入研究 UCenter API 之 加密与解密(转载) 4. ...
- 《ASP.NET Core 与 RESTful API 开发实战》-- (第10章)-- 读书笔记
第 10 章 部署 10.1 部署到 IIS ASP.NET Core 应用程序支持部署到 IIS 中,之后它将作为应用程序的反向代理服务器和负载均衡器,向应用程序中转传入的 HTTP 请求 默认情况 ...
- Discuz! Ucenter API for JAVA jar包和测试代码
为什么80%的码农都做不了架构师?>>> Discuz! Ucenter API for JAVA jar包和测试代码 Discuz! Ucenter API for JAVA-ja ...
- W5500开发笔记 | 02 - 使用W5500 Socket API 建立TCP服务端、TCP客户端
系列文章 W5500开发笔记 | 01- W5500 Socket API的说明 一.实现思路 W5500内部是硬件TCP/IP协议栈,对外(MCU)只是提供了操作socket的能力,内部支持8个独立 ...
- 【Visual C++】游戏开发笔记之一——API函数、DirectX的关键系统
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/7318264 作者:毛星云(浅墨) ...
- ThinkPHP5 RESTful API开发版本控制
thinkphp5 RESTful api开发版本控制,thinkphp官方文档不是很详细,我根据个人经验分享下. 我们以一个用户信息读取的接口为例,包含两个版本V1和V2,v2版本的接口包括用户的档 ...
最新文章
- Boost:ping的测试程序
- 在Windows上使用VSCode远程链接到Linux上开发并调试C++程序
- 函数分组学通MongoDB——第三天 细说高级操作
- 程序猿:我的未来,在哪里?
- 确定两个日期范围是否重叠
- PHP数组的使用方法小结
- 腾格尔发新歌《遥远的地方》,成都邓秀菊自发红包朋友圈寻歌词
- 五一,我们来欣赏一篇宋词
- expected primary-expression before ‘int‘
- 融云聊天--web SDK API
- 具有检查点的恢复技术
- GBase 8a支持国产CPU,ARM CPU,华为泰山的鲲鹏(Kunpeng),曙光的海光(Hygon),申威(SW)
- Spring之面向切面编程AOP(八)
- FFmpeg进阶:音视频滤镜概述
- Momentum算法
- 【知识积累】saturn集成springboot2.*
- 肿瘤MRD检测的前世今生
- 基于intel x86+fpga智能驾驶舱和高级驾驶辅助系统硬件设计(二)
- 常微分方程的解法 (二): 欧拉(Euler)方法
- Pyplot tutorial
热门文章
- CString学习俏狐总结
- 魅课 OM视频会议系统 proxy.php 文件包含漏洞
- 计算机内存中如何储存数据,内存条是如何存储数据的?
- 【搞事情】利用PyQt为目标检测SSD300添加界面(四)
- 从产品销量考虑渠道布局——洗衣机行业数据分析
- 985CS科班的一名很寂寞很寂寞的小男孩的2021年度总结
- 千峰WebPC端页面制作案例
- 如何用ajax做登录页面,ajax如何制作登录页面?登录页面ajax的请求详解(附完整实例)...
- [Review]To be coder(2011.08.01~2014.01.11-Grails-ing)
- VIM向上搜索和向下搜索