一、前言:

因为移动互联网的迅速发展,各大互联网厂商都推出了小程序,再加上原有的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 中添加应用程序

  1. 点击首页应用管理进入应用管理界面

  2. 点击添加新应用 开始添加应用

  3. 开始添加应用

    • 安装方式:自定义安装
    • 应用类型:其他
    • 应用名称:你的应用名称
    • 应用主URL:暂时写要整合的thinkphp站点的域名(稍后会修改)
    • 应用ip:一般不填
    • 通信密钥:可不填(不填会自动生成)
    • 是否开启同步登录:是
    • 是否接受通知:是
    • 其他选项默认即可
    • 点击提交

  4. 添加成功

4.2 整合 ThinkPHP5.1 与 GitHub 的代码

  1. 将下载的代码中的UCenter目录复制到thinkphp的扩展目录extend目录下

  2. 修改配置文件

    • 进入 UCenter->应用管理->刚刚添加的那一项应用->编辑

    • 复制配置信息

    • 将配置信息粘贴到 thinkphp根目录/extend/UCenter/config.php 中覆盖保存

  3. thinkphp 中新建一个模块准备和UCenter通信

    • 新建一个控制器

      php think make:controller [模块名称]/[控制器名称]

      笔者创建的模块是uc
      控制器名称是 UCenter

    • 创建一个模型

      php think make:model [模块名称]/[模型名称]

      笔者使用的模块是uc
      模型名称是 UCenter

  4. 修改新创建的控制器和模型

    • 修改新创建的控制器

      • 控制器继承 UCenter\Controller\ApiController

      • 覆盖公共属性$eventListener

        public $eventListener = [刚刚创建的模型];

    • 修改新创建的模型
      继承 UCenter\Model\EventModel

  5. 配置路由

    • 开启系统强制路由
      打开 thinkphp根目录/config/app.php

      // 将
      'url_lazy_route' => false,
      // 改为
      'url_lazy_route' => true,
      

      本步骤不是必须执行,只是为了系统安全而配置,

    • 为 UCenter能与thinkphp通信配置访问路由
      打开文件 thinkphp根目录/route/route.php新增一条路由信息

      // 新增一条路由信息
      Route::get('uc', 'uc/UCenter/uc');
      
  6. 修改下载的代码使之兼容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配置文件');

     > 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 整合相关推荐

  1. U8C推拉单API开发笔记

    U8C资料 开发文档 API中心 发布自定义API 于系统信息设置节点,注册外系统信息 新增API实体类,该类需要实现IAPICustmerDevelop接口 打开postman,设置请求头,调用接口 ...

  2. baidumap api MySQL_百度地图API开发笔记一(基础篇)

    什么是百度地图API? 百度地图API是一套由JavaScript语言编写的应用程序接口,它能够帮助您在网站中构建功能丰富.交互性强的地图应用.百度地图API包含了构建地图基本功能的各种接口,提供了诸 ...

  3. [置顶]       【Visual C++】游戏开发笔记之一——API函数、DirectX的关键系统...

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7318264 作者:毛星云    邮箱: h ...

  4. 5. 深入研究 UCenter API 之 MVC 网站下的用法(转载)

    1.  深入研究 UCenter API 之 开篇 (转载) 2.  深入研究 UCenter API 之 通讯原理(转载) 3.  深入研究 UCenter API 之 加密与解密(转载) 4.  ...

  5. 《ASP.NET Core 与 RESTful API 开发实战》-- (第10章)-- 读书笔记

    第 10 章 部署 10.1 部署到 IIS ASP.NET Core 应用程序支持部署到 IIS 中,之后它将作为应用程序的反向代理服务器和负载均衡器,向应用程序中转传入的 HTTP 请求 默认情况 ...

  6. Discuz! Ucenter API for JAVA jar包和测试代码

    为什么80%的码农都做不了架构师?>>> Discuz! Ucenter API for JAVA jar包和测试代码 Discuz! Ucenter API for JAVA-ja ...

  7. W5500开发笔记 | 02 - 使用W5500 Socket API 建立TCP服务端、TCP客户端

    系列文章 W5500开发笔记 | 01- W5500 Socket API的说明 一.实现思路 W5500内部是硬件TCP/IP协议栈,对外(MCU)只是提供了操作socket的能力,内部支持8个独立 ...

  8. 【Visual C++】游戏开发笔记之一——API函数、DirectX的关键系统

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/7318264 作者:毛星云(浅墨)  ...

  9. ThinkPHP5 RESTful API开发版本控制

    thinkphp5 RESTful api开发版本控制,thinkphp官方文档不是很详细,我根据个人经验分享下. 我们以一个用户信息读取的接口为例,包含两个版本V1和V2,v2版本的接口包括用户的档 ...

最新文章

  1. Boost:ping的测试程序
  2. 在Windows上使用VSCode远程链接到Linux上开发并调试C++程序
  3. 函数分组学通MongoDB——第三天 细说高级操作
  4. 程序猿:我的未来,在哪里?
  5. 确定两个日期范围是否重叠
  6. PHP数组的使用方法小结
  7. 腾格尔发新歌《遥远的地方》,成都邓秀菊自发红包朋友圈寻歌词
  8. 五一,我们来欣赏一篇宋词
  9. expected primary-expression before ‘int‘
  10. 融云聊天--web SDK API
  11. 具有检查点的恢复技术
  12. GBase 8a支持国产CPU,ARM CPU,华为泰山的鲲鹏(Kunpeng),曙光的海光(Hygon),申威(SW)
  13. Spring之面向切面编程AOP(八)
  14. FFmpeg进阶:音视频滤镜概述
  15. Momentum算法
  16. 【知识积累】saturn集成springboot2.*
  17. 肿瘤MRD检测的前世今生
  18. 基于intel x86+fpga智能驾驶舱和高级驾驶辅助系统硬件设计(二)
  19. 常微分方程的解法 (二): 欧拉(Euler)方法
  20. Pyplot tutorial

热门文章

  1. CString学习俏狐总结
  2. 魅课 OM视频会议系统 proxy.php 文件包含漏洞
  3. 计算机内存中如何储存数据,内存条是如何存储数据的?
  4. 【搞事情】利用PyQt为目标检测SSD300添加界面(四)
  5. 从产品销量考虑渠道布局——洗衣机行业数据分析
  6. 985CS科班的一名很寂寞很寂寞的小男孩的2021年度总结
  7. 千峰WebPC端页面制作案例
  8. 如何用ajax做登录页面,ajax如何制作登录页面?登录页面ajax的请求详解(附完整实例)...
  9. [Review]To be coder(2011.08.01~2014.01.11-Grails-ing)
  10. VIM向上搜索和向下搜索