跳转到主要内容
Jiewen’blog
开发与定制

接口与认证说明

适用版本:TinyTale 小程序 3.0.0 / TinyTale 配置插件 2.1.2。

本页说明当前客户端实际使用的主要接口与认证约定,方便维护和二次开发。完整字段以对应版本的 src/api/、src/types/tinytale.ts 和服务端实现为准,不能用旧版兼容接口推断新接口行为。

TinyTale 接口

以下路径统一使用前缀 /apis/tool.jiewen.run/v1alpha1。

方法与路径

用途

身份或访问条件

GET /options

读取公开页面配置

插件和授权配置有效

GET /moments

瞬间列表

开启瞬间密码时需要访问密码

GET /photos

图库列表

开启图库密码时需要访问密码

GET /photogroups

公开图库分组

开启图库密码时需要访问密码

GET /articles/{name}

按服务端阅读许可输出文章

公开阅读或对应用户、阅读凭证

POST /mp/sessions/weixin

微信静默恢复或主动登录

有效微信 code;主动注册还受站点策略约束

POST /mp/sessions/weixin/account

Halo 账号密码登录

可用账号;可附微信 code 进行绑定

POST /mp/bindings/weixin

将当前微信绑定到已登录账号

当前用户会话与有效微信 code

POST /restrict-read/check

验证阅读凭据

当前用户会话和文章策略

POST /restrict-read/comment-access

申请匿名评论阅读凭证

文章、主评论与邮箱经服务端校验

POST /restrict-read/verification-code 当前用于广告验证码的能力不可用,返回 501 和 AD_VERIFICATION_UNAVAILABLE,不应作为可依赖的验证码来源。旧 baseCore 路径及 verify-openid 属于兼容内容,新集成应使用当前会话流程。

登录请求与会话

微信登录请求示例,code 必须由当前微信运行环境实时取得:

{
  "code": "本次微信登录凭证",
  "mode": "silent"
}

silent 只恢复已有绑定;wechat 表示用户主动微信登录,可在满足注册策略时创建账号。账号密码接口接收 username、password 和可选的 code。绑定接口接收 code,同时携带已登录用户的 Authorization。

登录结果包含 tokenValue、expiresAt、username、role、openid 和 wechatBound。tokenValue 已是完整的 Bearer tt_… 值,设置 Authorization 请求头时原样使用,不再追加第二个 Bearer。

const headers = {
  Authorization: loginResult.tokenValue,
}

客户端按过期时间管理会话,当前实现会提前约 30 秒判定需要更新,并处理并发登录和退出后的旧响应。复用 sessionStore 和现有请求层,避免每个页面独立执行登录恢复。

服务端会重新读取 Halo 用户与角色,禁用账号或撤销权限不能仅靠旧 JWT 延续访问。前端 role 用于界面显示,不代替服务端鉴权。

Halo 与插件管理接口

这些接口不在 TinyTale 前缀下,均应按当前用户权限调用。

方法与路径

用途

GET /apis/api.console.halo.run/v1alpha1/users/-

当前用户与角色信息

PUT /apis/api.console.halo.run/v1alpha1/users/-

更新当前用户资料

POST /apis/api.console.halo.run/v1alpha1/users/-/avatar

上传当前用户头像

DELETE /apis/api.console.halo.run/v1alpha1/users/-/avatar

接口层提供的头像删除能力

POST /apis/api.console.halo.run/v1alpha1/attachments/upload

附件上传

GET /apis/console.api.photo.halo.run/v1alpha1/photogroups

发布页使用的可管理图库分组

POST /apis/core.halo.run/v1alpha1/photos

创建图库记录

POST /apis/console.api.moment.halo.run/v1alpha1/moments

创建瞬间

附件上传使用 multipart 文件请求,并按需传递 policyName、groupName。图库创建使用 Photo 资源结构;瞬间创建使用 Moment 资源结构。优先调用 src/api/console.ts 的封装,保留上传和内容创建分步失败时的处理。

友链申请由 /apis/api.link.halo.run/v1alpha1/link-applications 提供,验证码为其 /captcha 子路径。它们依赖链接插件的实际能力,不能当作 TinyTale 核心插件始终提供的接口。

阅读凭证与错误处理

图库、瞬间访问密码放入 X-TinyTale-Access-Password 请求头,不写入分享 URL。Tools 专用集成令牌保留在服务端,客户端只提交当前流程需要的用户输入或阅读凭证。

文章接口返回经过限制处理的内容和状态,前端依据服务端结果显示正文与受限区域。不要只隐藏按钮而仍向游客获取完整受限内容。

401 优先按会话失效处理,403 检查权限或明确错误码,429 按服务端提示等待。网络异常或一般 403 不应触发无限自动登录;可能已经写入成功的发布请求,应先确认结果再重试。

调试日志保留路径、状态码和错误码,隐藏完整会话、密码、code、邮箱、Cookie 和服务端令牌。

文档导航