需求
当用户授权登录微信公众号提供的程序时,或者通过微信公众号注册时,将注册信息发送给ucenter接口,通过ucenter实现注册和登录。该功能基于之前开发的微信公众号会话开发程序。
参考资料
在整合TP6与ucenter时,主要参考了 UCenter API开发笔记——UCenter与ThinkPHP5.1 整合 实现了成功通信。
整合前提
thinkphp6
这个肯定已经有了。
安装Center1.6.0
因之前我已经安装过Ucenter,并且实现了Ucenter和Supesite的整合,此处安装Ucenter过程略。请百度Ucenter安装方法。
下载thinkphp5ucenter接口
下载地址: thinkphp5 UCenter 接口
整合
- ucenter中添加应用程序,参考UCenter API开发笔记——UCenter与ThinkPHP5.1 整合
将下载好的thinkphp5ucenter接口代码中的UCenter目录复制到thinkphp的扩展目录extend目录下,如图所示。
复制ucenter中配置的通信参数
进入UCenter->应用管理->刚刚添加的那一项应用->编辑->页面底部内容
将配置信息黏贴到thinkphp根目录/extend/UCenter/config.php中覆盖保存
tp6中新建一个模块用于与Ucenter通信
因我部署的tp6是单应用,所以新建controller代码如下
php think make:controller app/UCenter
新建一个模型
php think make:model uc/UCenter
- 修改新创建的控制器和模型
7.1 修改控制器使其继承UcenterControllerApiController,完整代码如下
<?php
declare (strict_types = 1);
namespace appcontroller;
use UcenterControllerApiController;
class UCenter extends ApiController
{
public $eventListener = 'appmodelucUCenter';
}
7.2 修改模型使其继承UCenterModelEventModel,完整代码如下
<?php
declare (strict_types = 1);
namespace appmodeluc;
use UCenterModelEventModel;
/**
* @mixin thinkModel
*/
class UCenter extends EventModel
{
//
}
8 配置路由
- 开启系统路由 config/route.php
'url_lazy_route' => true,
此处我保持false也是可以成功的。最好还是改为true
新增路由信息
- 打开文件 thinkphp根目录/route/app.php新增一条路由信息
Route::get('uc', 'uc/UCenter/uc');
9 修改extend/UCenter/Controller/ApiController.php
- 去掉use thinkLog;和use thinkLoader;
- 添加use thinkfacadeLog;
- 去掉class ApiController extends Controller 中的 extends Controller
``
- 将
$action = Loader::parseName($get['action'], '1');
改为$action = parse_name($get['action'], '1');
10 修改extend/UCenter/Controller/UcController.php
1 去掉use thinkController;,添加下面的代码
use thinkfacadeLog;
use thinkfacadeRequest;
2 去掉class UcController extends Controller的extends Controller
3 更改$ip = !empty($reg_ip) ? $reg_ip : get_client_ip();
为$ip = !empty($reg_ip) ? $reg_ip : Request::host();
11 修改UCenter应用信息
- 应用主URL更改为应用域名/index.php/uc
- 应用接口文件名称由uc.php该为uc
到此,刷新ucenter应用管理页面,可以看到通信成功。
下一篇讲通过ucenter接口实现注册和登录。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。