- App 接口ID app_api版本 1.2.0插件制作者 bbs1免费1747 行 / 86.6 KBHook / 路由 / 后台页让手机 App 与微信小程序可以登录站点、浏览版块和主题、发帖回帖、上传图片、接收通知。app/plugins/app_api/plugin.php插件预览3 张开发日志已有 3 条
个人独立维护项目。
淘帖专辑必装插件主楼 版本 1.0.0 更新:
给手机 App、微信小程序和 H5 用的 JSON 数据接口。用 Bearer 令牌认证,不依赖 Cookie 会话;App 端和网页端看到的内容、拥有的权限完全一致。接口地址:
/api/v1/…能做什么
账号
POST /v1/auth/login用户名密码换一对令牌POST /v1/auth/refresh续期令牌换新的一对POST /v1/auth/logout注销当前设备POST /v1/auth/registerApp 内注册(后台默认关闭)GET /v1/me当前用户的资料与权限
站点
GET /v1/config站点信息、App 内公告、要求的最低版本与下载地址GET /v1/forums当前身份有权浏览的版块列表
内容
GET /v1/topics主题流,可按版块筛选,按发布时间或回复时间排序GET /v1/topics/{id}主题正文与回复列表POST /v1/topics发主题POST /v1/topics/{id}/replies回复主题GET /v1/search搜索主题与回复
几个约定
- 响应统一是
{"code":0,"message":"ok","data":{…}},code为0表示成功,其余为错误码。 - 翻页用游标,不用页码:把响应里的
next_cursor原样回传即可。中途有人发帖也不会重复或漏读。 - 令牌在服务端只存哈希,并绑定账号当前的密码。改密码、账号被禁用、被改为禁言,已签发的令牌都立刻失效。
- 换令牌时旧的一对立刻作废,所以客户端要做单飞刷新,避免并发请求互相顶掉。
- 发帖回帖走和网页端完全一样的规则:禁言判定、发帖间隔、版块发帖权限、内容长度,一条都不放宽。
- 预留了
app_api.before_publish钩子,其他插件可以在这里拦截 App 端发布的内容。
写在最后
开关、令牌有效期、每账号同时在线的设备数(默认 5 台)、App 内公告,都在后台「插件 → App 接口」里设置。
一共 12 个接口。列表里我特意没写请求参数细节——帖子读者关心的「能做什么」,参数留给他们去翻接口文档更合适;你要是想让帖子更硬核,我可以把每个接口的参数补进列表里。
插件质量报告
插件:
app_apiHook 功能范围 循环 使用频率 文件读写 修改系统表 读写系统表 读写自己的表 request.csrf_exempt 请求 CSRF 豁免检查 否 2 - - - - site.closed_allow 站点关闭访问豁免检查 否 2 - - - - 颜色说明:黄色表示有数据读写,红色表示 Hook 在系统循环中执行,浅蓝色表示有文件写入。“列表跳过”表示回调在列表路径会提前返回,“回调内”表示操作位于回调自身或其帮助函数的循环体内。“文件批处理”表示逐个处理用户一次提交的文件,属于必要操作,不标记修正。只有操作实际处于需要优化的循环路径时,才会标记“修正❗️”。
数据字典
plugin_app_api_tokens字段 类型 可空 默认值 约束 id id 否 - 主键、自增 user_id uint 否 0 - token_hash key 否 - 唯一 refresh_hash key 否 - 唯一 password_fp key 否 '' - device string 否 '' - platform string 否 '' - expires_at uint 否 0 - refresh_expires_at uint 否 0 - last_used_at uint 否 0 - created_at uint 否 0 - revoked_at uint 否 0 - plugin_app_api_oauth字段 类型 可空 默认值 约束 id id 否 - 主键、自增 provider string 否 '' - bind_key key 否 - 唯一 openid string 否 '' - unionid string 否 '' - user_id uint 否 0 - created_at uint 否 0 - plugin_app_api_pending字段 类型 可空 默认值 约束 id id 否 - 主键、自增 provider string 否 '' - ticket_hash key 否 - 唯一 bind_key key 否 '' - openid string 否 '' - unionid string 否 '' - expires_at uint 否 0 - created_at uint 否 0 - 不错,可以。
版本 1.2.0 更新:
上传图片、接收通知非常好
版本 1.2.0 更新:
基础app