本项目是 Wafer 组成部分,以 SDK 的形式为业务服务器提供以下服务:
- 方法一(推荐):使用 PHP 包依赖管理工具
composer
执行以下命令安装
composer require qcloud/weapp-sdk
- 方法二: 直接下载本仓库
ZIP
包解压到项目目录中
参见 API 文档
// 方法一:使用 composer 加载
require_once 'path/to/vendor/autoload.php';
// 方法二:不使用 composer 加载
require_once 'path/to/qcloud/weapp-sdk/AutoLoader.php';
use \QCloud_WeApp_SDK\Conf;
Config::setup(array(
'ServerHost' => '业务服务器的主机名',
'AuthServerUrl' => '鉴权服务器服务地址',
'TunnelServerUrl' => '信道服务器服务地址',
'TunnelSignatureKey' => '和信道服务器通信的签名密钥',
));
关于 SDK 配置字段的含义以及配置文件格式的更多信息,请参考服务端 SDK 配置。
业务服务器提供一个路由(如 /login
)处理客户端的登录请求,直接使用 SDK 的 LoginService::login() 方法即可完成登录处理。登录成功后,可以获取用户信息。
use \QCloud_WeApp_SDK\Auth\LoginService;
$result = LoginService::login();
if ($result['code'] === 0) {
// 微信用户信息:`$result['data']['userInfo']`
} else {
// 登录失败原因:`$result['message']`
}
客户端交给业务服务器的请求,业务服务器可以通过 SDK 的 LoginService::check() 方法来检查该请求是否包含合法的会话。如果包含,则会返回会话对应的用户信息。
use \QCloud_WeApp_SDK\Auth\LoginService;
$result = LoginService::check();
if ($result['code'] !== 0) {
// 登录态失败原因:`$result['message']`
return;
}
// 使用微信用户信息(`$result['data']['userInfo']`)处理其它业务逻辑
// ...
阅读 Wafer Wiki 文档中的会话服务了解更多关于会话服务的技术资料。
业务在一个路由上(如 /tunnel
)提供信道服务,只需把该路由上的请求都交给 SDK 的信道服务处理即可。
use \QCloud_WeApp_SDK\Tunnel\TunnelService;
use \QCloud_WeApp_SDK\Tunnel\ITunnelHandler;
class TunnelHandler implements ITunnelHandler {
// TODO: 实现 onRequest 方法,处理信道连接请求
public function onRequest($tunnelId, $userInfo) {
}
// TODO: 实现 onConnect 方法,处理信道连接事件
public function onConnect($tunnelId) {
}
// TODO: 实现 onMessage 方法,处理信道消息
public function onMessage($tunnelId, $type, $content) {
}
// TODO: 实现 onClose 方法,处理信道关闭事件
public function onClose($tunnelId) {
}
}
$handler = new TunnelHandler();
TunnelService::handle($handler, array('checkLogin' => TRUE));
使用信道服务需要实现处理器,来获取处理信道的各种事件,具体可参考接口 ITunnelHandler 的 API 文档以及配套 Demo 中的 ChatTunnelHandler 的实现。
阅读 Wafer Wiki 中的信道服务了解更多解决方案中关于信道服务的技术资料。
参见项目:Wafer 服务端 DEMO - PHP