UCenter API 开发笔记——UCenter与ThinkPHP5.1 整合

本文详细记录了如何使用ThinkPHP5.1框架整合UCenter,实现账号管理、头像管理、短消息管理和好友管理等功能,适用于需要统一多平台用户数据的开发者。

一、前言:

因为移动互联网的迅速发展,各大互联网厂商都推出了小程序,再加上原有的APP、web等项目,用户数据被严重割裂。为了统一用户数据、优化用户体验:实现一个账号多平台登录、数据互通,迫切需要一个用户中心来管理各平台的用户。又因为平台用户数不多,且有discuz背景,所以用ThinkPHP整合十年前的UCenter,引出各种用户操作的API,就成了最佳选择。

而笔者在查找资料时,大多是thinkphp3.2与UCenter的整合文章,且描述的不是很清楚,故写此文记录合并过程,希望可以对有相同需求的人提供一点帮助。

二、UCenter 的基本功能

  • 账号管理:包括注册、登录、删除、修改用户信息(密码、邮箱等)
  • 头像管理:上传、删除,生成调用头像的链接,头像类别(真实头像、虚拟头像两种)

注:UCenter开发文档上没说真实头像虚拟头像的区别,笔者姑且认为虚拟头像就是我们平时的头像,而真实头像就是用户个人的照片。

  • 短消息管理:发送、删除短消息等。

注:本功能优点是可以实现用户跨平台交流,缺点是不能向IM(即时通讯软件)那样快速,而且原生不支持发送图片等媒体消息。

  • 好友管理:添加、删除好友,获取好友列表等
  • 其他功能:应用接口、积分接口、标签接口、事件接口和邮箱接口等不在本次开发范围之列,故不做讨论。

UCenter开发文档

三、准备工作

  • 安装 ThinkPHP5.1
    安装步骤详见 ThinkPHP5.1完全开发手册
    thinkphp5.1目录

  • 下载GitHub上@hyperzlibthinkphp5 UCenter 接口

    github截图

  • 一个UCenter
    ucenter后台截图

    • 安装方法及兼容PHP7网上有很多教程,这里就不赘述了
    • 笔者以discuz x3.4自带的UCenter为例,独立的UCenter整合方法也一样

四、整合

4.1 UCenter 中添加应用程序

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

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

  3. 开始添加应用

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

    4.1.3

  4. 添加成功
    4.1.4-1
    4.1.4-2

4.2 整合 ThinkPHP5.1 与 GitHub 的代码

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

  2. 修改配置文件

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

    • 复制配置信息
      4.2.2-2

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

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

    • 新建一个控制器

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

      4.2.3-1

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

    • 创建一个模型

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

      4.2.3-2

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

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

    • 修改新创建的控制器

      • 控制器继承 UCenter\Controller\ApiController

      • 覆盖公共属性$eventListener

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

      4.2.4-1

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

  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;

      4.2.6-1

      thinkphp5.1取消了静态方法,故采用facade兼容

    • 修改文件 tinkphp根目录/extend/UCenter/Controller/UcController.php

      • 将命名空间改为UCenter\Controller
        4.2.6-2

      • 将类的继承由 BaseController 改为 Controller
        4.2.6-3

      这部分应该是作者没有改 tp3.2版本的代码,直接搬过去,从而没有做对tp5版本的兼容

    • 修改文件 tinkphp根目录/extend/UCenter/Api.php

      • 在14行添加require_once(__DIR__.'/config.php');
      • 将16行处 E('未发现ucnter配置文件');
        改为 exception('未发现ucnter配置文件');

    4.2.6-4

     > tp5抛弃了tp3.2的单字母助手函数,所以要作此修改来兼容tp5.1
    

4.3 修改UCenter应用信息

因为在创建应用时thinkphp并没有配置完成,也没有路由信息,所以现在要编辑UCenter对应的应用,来确保应用和UCenter通信成功从而完成整合。

  • 应用主URL改为 应用域名/index.php/uc

    • index.php若已配置隐藏,则可不用写
    • uc 为笔者在 4.2 -> 5. 处配置的路由信息,可替换为自己的配置
  • 应用接口文件名称 由 uc.php 改为 uc

4.3

五、整合完成

返回应用列表,发现通信成功,至此,UCenter 与 ThinkPHP5.1整合完成

5

六、后记

本文仅描述了UCenter与ThinkPHP5.1的整合过程,最终实现了通信成功。其中,笔者创建的uc模块仅为应用与UCenter通信使用。若读者要参照UCenter开发手册,对UCenter进行开发,则需要新建模块、控制器,使其继承 thinkphp根目录/extend/Controller/UcController.php进行开发。

如果本文对您有用或有意见建议,欢迎点赞、留言~

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值