一、这是什么
为 App / H5 / 第三方客户端提供统一的对外 REST API 接入层:把论坛的登录、版块、帖子、
用户、搜索、通知、私信等能力以一套稳定的 {code,message,data} 响应对外暴露,
让移动端与第三方客户端不必依赖网页会话与 CSRF,仅凭 Bearer 令牌即可读写。
二、主要能力
| 模块 | 说明 |
|---|---|
| 认证 | Bearer 令牌(前缀 fh_app_);access 2h / refresh 30d,刷新令牌轮换 + 复用检测;数据库只存 sha256 |
| 接口 | 认证 / 版块 / 帖子(含回帖)/ 用户 / 搜索 / 通知 / 私信,全部对齐核心权限口径 |
| 限流与审计 | 按 Token 独立计数(写 5 / 分钟、读 60 / 分钟),逐次调用写审计 |
| 安全 | 默认同源 CORS(后台可加白名单,禁 *);每次调用校验封禁状态;写操作走核心 Model 层(复用审核/积分/封禁逻辑) |
| 前台 | /api-tokens 设备管理页:新建令牌(明文仅显示一次)、查看、撤销 |
| 后台 | /admin/mobile-api:服务设置 / 令牌管理 / 调用审计 三分区 |
| 扩展点 | 提供 mobile_api_routes 钩子,其他插件可把自己的功能挂到 /api 之下(示例:daily_checkin 接入 /api/checkin) |
三、⚠️ 最低核心版本 = 1.1.21
本插件调用了核心 V1.1.21 才新增的 3 个方法:
app/Models/User.php::getReplies()—— 用户回复列表(GET /api/users/{id}/replies)app/Helpers/Notification.php::markRead()—— 通知批量已读(POST /api/notifications/{id}/read)app/Models/Message.php::getConversation()/countConversation()/send()—— 私信会话(GET/POST /api/messages)
低于 1.1.21 的站点安装后,上述三类接口会因核心方法缺失而报错。
故本插件 min_core = 1.1.21 —— 核心 ≥ 1.1.21 才能安装(PluginUpdater::coreSatisfies() 硬门禁)。
四、安装与使用
后台 → 插件 → 商店 → 安装「移动端 API」(勾选「安装后自动启用」)。
进入后台 移动端 API → 服务设置,打开总开关(默认关闭)。
用户在前台
/api-tokens页创建设备令牌,把令牌明文填入客户端,请求头携带:Authorization: Bearer fh_app_xxxxxxxx API 基础地址:<站点地址>/api
五、说明
- 本插件为独立插件包,不修改核心代码;前置要求为核心 ≥ 1.1.21。
- 与「MCP 服务」插件(
mcp_server)各自独立,令牌互不通用。