Loading...
Loading...
飞书 OAuth 认证和 User Access Token 管理。两步式非交互登录(AI Agent 专用)、 Token 状态检查、scope 配置、自动刷新机制、搜索功能的 Token 依赖关系。 当用户请求"登录飞书"、"获取 Token"、"OAuth 授权"、"auth login"、"认证"、 "搜索需要什么权限"、"Token 过期了"、"刷新 Token"时使用。 当遇到权限错误(如 99991679 Unauthorized)、Token 过期、state 不匹配等问题时也应使用此技能。 也适用于:搜索命令报权限错误、Token 相关的排错、需要判断当前授权状态的场景。 当其他飞书技能(toolkit/msg/read 等)遇到 User Access Token 相关问题时,也应参考此技能。
npx skill4agent add riba2534/feishu-cli feishu-cli-auth~/.feishu-cli/token.jsonoffline_access--manual--print-urlauth callbackfeishu-cli auth login --print-url --scopes "offline_access search:docs:read search:message drive:drive.search:readonly wiki:wiki:readonly calendar:calendar:read calendar:calendar.event:read calendar:calendar.event:create calendar:calendar.event:update calendar:calendar.event:reply calendar:calendar.free_busy:read task:task:read task:task:write task:tasklist:read task:tasklist:write im:message:readonly im:message.group_msg:get_as_user im:chat:read contact:user.base:readonly drive:drive.metadata:readonly"{
"auth_url": "https://accounts.feishu.cn/open-apis/authen/v1/authorize?...",
"state": "随机64字符十六进制字符串",
"redirect_uri": "http://127.0.0.1:9768/callback"
}auth_url127.0.0.1:9768/callback?code=xxx&state=yyyfeishu-cli auth callback "<回调URL>" --state "<步骤1输出的state>"{
"status": "success",
"expires_at": "2026-03-09T04:31:11+08:00",
"scope": "auth:user.id:read search:docs:read search:message offline_access"
}~/.feishu-cli/token.json| 错误 | 原因 | 解决 |
|---|---|---|
| 授权 code 有效期约 5 分钟,用户复制回调 URL 太慢 | 重新执行步骤 1 获取新的授权 URL,提醒用户尽快完成 |
| | 确保 |
| 网络超时 / 连接失败 | 无法访问飞书 OAuth 服务器(网络不通或代理问题) | 检查网络连通性,确认能访问 |
# 步骤 1(使用最大 scope 范围)
feishu-cli auth login --print-url --scopes "offline_access search:docs:read search:message drive:drive.search:readonly wiki:wiki:readonly calendar:calendar:read calendar:calendar.event:read calendar:calendar.event:create calendar:calendar.event:update calendar:calendar.event:reply calendar:calendar.free_busy:read task:task:read task:task:write task:tasklist:read task:tasklist:write im:message:readonly im:message.group_msg:get_as_user im:chat:read contact:user.base:readonly drive:drive.metadata:readonly"
# → 展示 auth_url 给用户,用户浏览器授权后复制回调 URL
# 步骤 2(用步骤 1 的 state 和用户提供的回调 URL)
feishu-cli auth callback "http://127.0.0.1:9768/callback?code=xxx&state=yyy" --state "yyy"--scopesoffline_access search:docs:read search:message drive:drive.search:readonly wiki:wiki:readonly calendar:calendar:read calendar:calendar.event:read calendar:calendar.event:create calendar:calendar.event:update calendar:calendar.event:reply calendar:calendar.free_busy:read task:task:read task:task:write task:tasklist:read task:tasklist:write im:message:readonly im:message.group_msg:get_as_user im:chat:read contact:user.base:readonly drive:drive.metadata:readonlyresolveOptionalUserToken--user-access-tokenFEISHU_USER_ACCESS_TOKENsearch docs/messages/appsresolveRequiredUserToken| scope | 作用 | 对应命令 |
|---|---|---|
| 获取 Refresh Token(30 天有效) | 必须包含,否则 2 小时后需重新登录 |
| 搜索云文档 | |
| 搜索消息 | |
| 搜索云空间文件 | |
| 知识库读取(用户身份) | |
| 日历读取 | |
| 日历事件读取 | |
| 创建日历事件 | |
| 更新日历事件 | |
| 回复日历事件 | |
| 忙闲查询 | |
| 任务读取 | |
| 任务写入 | |
| 任务列表读取 | |
| 任务列表写入 | |
| 消息历史读取 | |
| 用户身份读取群消息 | |
| 群聊信息读取 | |
| 用户信息读取 | |
| 文件元数据读取 | |
| 用户身份信息 | 通常自动包含 |
| 错误 | 原因 | 解决 |
|---|---|---|
| Token 的 scope 不包含目标 API 权限 | 重新登录,使用最大 scope |
| Refresh Token 为空 | 缺少 | 重新登录,使用最大 scope |
| 开发者后台未启用该权限 | 在飞书开放平台启用对应权限后重新授权 |
# 人类可读格式
feishu-cli auth status
# JSON 格式(AI Agent 推荐)
feishu-cli auth status -o json{
"logged_in": true,
"access_token_valid": true,
"access_token_expires_at": "2026-03-09T04:32:19+08:00",
"refresh_token_valid": true,
"refresh_token_expires_at": "2026-03-16T02:32:19+08:00",
"scope": "auth:user.id:read search:docs:read search:message offline_access"
}{"logged_in": false}logged_in=false → 从未登录,需要 auth login
access_token_valid=true → 正常可用
access_token_valid=false + refresh_token_valid=true → 下次调用时自动刷新,无需操作
access_token_valid=false + refresh_token_valid=false → 需要重新 auth login
scope 中无目标权限 → 需要重新登录并补充 scoperesolveRequiredUserTokenResolveUserAccessToken()resolveOptionalUserToken--user-access-tokenFEISHU_USER_ACCESS_TOKEN~/.feishu-cli/token.jsonconfig.yamluser_access_token[自动刷新] 刷新成功...| 命令 | 需要的 scope |
|---|---|
| |
| |
| (需确认应用是否已开通搜索应用权限) |
resolveOptionalUserToken--user-access-tokenFEISHU_USER_ACCESS_TOKEN| 命令类别 | 需要的 scope |
|---|---|
| |
| |
| |
| |
| |
| |
# 1. 检查是否已登录且 Token 有效
feishu-cli auth status -o json
# 2. 如果未登录或已过期,执行两步式登录(使用最大 scope)
feishu-cli auth login --print-url --scopes "offline_access search:docs:read search:message drive:drive.search:readonly wiki:wiki:readonly calendar:calendar:read calendar:calendar.event:read calendar:calendar.event:create calendar:calendar.event:update calendar:calendar.event:reply calendar:calendar.free_busy:read task:task:read task:task:write task:tasklist:read task:tasklist:write im:message:readonly im:message.group_msg:get_as_user im:chat:read contact:user.base:readonly drive:drive.metadata:readonly"
# ... 用户授权 ...
feishu-cli auth callback "<回调URL>" --state "<state>"
# 3. 登录后搜索命令自动从 token.json 读取 Token
feishu-cli search docs "产品需求"
# 其他命令默认使用 App Token,需要时可显式传 --user-access-token
feishu-cli wiki export <node_token> -o doc.md
feishu-cli task create --summary "待办事项"# 本地桌面环境(默认):自动打开浏览器 + 本地 HTTP 回调
feishu-cli auth login --scopes "offline_access search:docs:read search:message drive:drive.search:readonly wiki:wiki:readonly calendar:calendar:read calendar:calendar.event:read calendar:calendar.event:create calendar:calendar.event:update calendar:calendar.event:reply calendar:calendar.free_busy:read task:task:read task:task:write task:tasklist:read task:tasklist:write im:message:readonly im:message.group_msg:get_as_user im:chat:read contact:user.base:readonly drive:drive.metadata:readonly"
# 远程 SSH 环境:打印 URL,用户手动粘贴回调 URL(交互式 stdin)
feishu-cli auth login --manual --scopes "offline_access search:docs:read search:message drive:drive.search:readonly wiki:wiki:readonly calendar:calendar:read calendar:calendar.event:read calendar:calendar.event:create calendar:calendar.event:update calendar:calendar.event:reply calendar:calendar.free_busy:read task:task:read task:task:write task:tasklist:read task:tasklist:write im:message:readonly im:message.group_msg:get_as_user im:chat:read contact:user.base:readonly drive:drive.metadata:readonly"http://127.0.0.1:9768/callback--port 8080feishu-cli auth logout~/.feishu-cli/token.json| 问题 | 诊断 | 解决 |
|---|---|---|
| "缺少 User Access Token" | 从未登录 | 执行 |
| "User Access Token 已过期" | token.json 中 access + refresh 都过期 | 重新 |
| 搜索报 99991679 权限错误 | scope 不足 | 重新登录,加上缺失的 scope |
| Refresh Token 为空 | 未包含 | 重新登录,加上 |
| "state 不匹配" | | 确保使用同一次 |
| "端口被占用" | 9768 端口已被其他进程使用 | 使用 |
| stdin 阻塞 | 改用 |