Fanbook 中文文档 下载 App

API 鉴权 Bot Token User Token WebSocket 连接

两种令牌

Fanbook Bot API 使用两种令牌进行身份验证,分别用于不同的场景:

令牌用途在哪里用
Bot Token调用 Bot API 端点URL 路径中
User Token建立 WebSocket 连接 / 调用 GraphQL APIHeader 中

Bot Token

获取方式

在机器人管家创建新 BOT 时自动生成。只会显示一次,请立即保存!

格式

Bot Token 的格式通常是一串较长的加密字符串,类似:

2556974225:ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890

实际格式以官方生成的为准,上面只是示意。

使用方式

放在 API URL 的路径中:

POST https://a1.fanbook.cn/api/bot/{你的BotToken}/sendMessage

重置

如果怀疑 Token 泄露,可以在机器人管家里面重置 Token。重置后旧 Token 立即失效。

安全红线

User Token

获取方式

调用 /getMe 端点的响应中会返回 user_token 字段。这个 Token 用于 WebSocket 连接和 GraphQL API。

使用方式

放在 HTTP 请求的 Header 中:

usertoken: {你的UserToken}

注意事项

鉴权流程

1. 创建 BOT → 获得 Bot Token
2. 用 Bot Token 调用 /getMe (GET)
   → 响应中包含 BOT 信息 + user_token
3. 用 Bot Token 调用大多数 Bot API 端点
4. 用 User Token 建立 WebSocket 连接(接收消息推送)
   → 或调用 GraphQL API
5. User Token 过期后,回到第 2 步重新获取

WebSocket 连接

用途

Bot API 有两种消息接收方式:长轮询(BOT 开发入门 已介绍)和 WebSocket。

WebSocket 的优势:

连接流程(以公开信息为准)

  1. 调用 /getMe 拿到 user_token 和 WebSocket URL(如果 API 返回了)
  2. 用 WebSocket 客户端连接 WebSocket URL
  3. 在连接的认证阶段传入 user_token
  4. 成功连接后,服务器开始推送事件(新消息、成员加入等)
  5. 断线后需要自动重连,并在重连时重新用 user_token 认证

Python WebSocket 示例(概念性)

import websockets
import asyncio

async def main():
    uri = "wss://..."  # WebSocket 地址(从 API 获取)
    user_token = "..."  # 从 /getMe 拿到

    async with websockets.connect(uri) as ws:
        # 认证(具体格式以官方文档为准)
        await ws.send(user_token)

        # 接收事件推送
        async for event in ws:
            data = json.loads(event)
            # 处理消息事件、成员事件等
            print(data)

asyncio.run(main())

注意: WebSocket 的具体连接地址和认证协议以官方最新文档为准,上面只是示意性代码。

GraphQL API 鉴权

GraphQL API(用于机器人管理功能如更新 BOT 信息)需要在请求 Header 中携带 User Token:

POST https://a1.fanbook.cn/api/bot/console
Header: usertoken: {你的UserToken}
Content-Type: application/json

Body:
{
  "query": "mutation ..."
}

安全最佳实践总结

实践原因
Bot Token 存环境变量,不硬编码防止泄露到公开仓库
User Token 过期自动刷新长时间运行的 BOT 会用到
不把 Token 写进日志日志可能被多人访问
重置疑似泄露的 Token泄露后旧 Token 会被滥用
区分不同环境的 Token开发环境和生产环境用不同 BOT,互不影响

OAuth?

目前(以公开 API 文档为准)Fanbook Bot API 主要使用 Token 鉴权,没有看到完整的 OAuth 2.0 授权流程。如果官方后续开放 OAuth,应以最新文档为准。