From e41f9bb115391c87a1360a4b1cdcd592b66891ce Mon Sep 17 00:00:00 2001 From: karuo Date: Mon, 2 Mar 2026 02:45:40 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=84=20=E5=8D=A1=E8=8B=A5AI=20=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=202026-03-02=2002:45=20|=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=EF=BC=9A=E6=B0=B4=E6=A1=A5=E5=B9=B3=E5=8F=B0=E5=AF=B9=E6=8E=A5?= =?UTF-8?q?=E3=80=81=E8=BF=90=E8=90=A5=E4=B8=AD=E6=9E=A2=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E5=8F=B0=20|=20=E6=8E=92=E9=99=A4=20>20MB:=2014=20=E4=B8=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02_卡人(水)/水桥_平台对接/飞书管理/SKILL.md | 2 +- .../参考资料/飞书多维表格权限开通说明_给卡罗维亚.md | 60 +++++++++++++++++++ .../水桥_平台对接/飞书管理/脚本/auto_log.py | 3 +- .../水桥_平台对接/飞书管理/脚本/feishu_api.py | 6 +- .../飞书管理/脚本/upload_json_to_feishu_doc.py | 3 +- 运营中枢/工作台/gitea_push_log.md | 1 + 运营中枢/工作台/代码管理.md | 1 + 7 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 02_卡人(水)/水桥_平台对接/飞书管理/参考资料/飞书多维表格权限开通说明_给卡罗维亚.md diff --git a/02_卡人(水)/水桥_平台对接/飞书管理/SKILL.md b/02_卡人(水)/水桥_平台对接/飞书管理/SKILL.md index 54a9ba8a..abae3b8e 100755 --- a/02_卡人(水)/水桥_平台对接/飞书管理/SKILL.md +++ b/02_卡人(水)/水桥_平台对接/飞书管理/SKILL.md @@ -368,7 +368,7 @@ python3 脚本/upload_json_to_feishu_doc.py /path/to/xxx.json --parent 用途:上传 JSON 时若类型为多维表格,需在飞书创建多维表格;当前报错缺少**用户身份**下的 `bitable:app`、`base:app:create`。请按下列步骤在开放平台开通,并让使用人重新授权。 + +--- + +## 一、问题现象 + +- 运行 `upload_json_to_feishu_doc.py` 上传「水流程规划」等 JSON 时,检测为多维表格并尝试创建,接口返回: +- **错误**:`required one of these privileges under the user identity: [bitable:app, base:app:create]` +- 说明:创建多维表格接口要求的是**用户身份权限**(user_access_token),不是应用身份权限。 + +--- + +## 二、开通步骤(开放平台侧) + +1. **打开权限管理** + - 登录 [飞书开放平台](https://open.feishu.cn) → 进入应用「卡若私域」→ 左侧 **权限管理**。 + +2. **点击「开通权限」** + - 在弹窗顶部的 **Tab 切到「用户身份权限 user_access_token」**(不要用「应用身份权限」)。 + - 搜索框输入:`bitable` 或 `base:app`。 + +3. **勾选并保存** + - 勾选:**查看、评论、编辑和管理多维表格**(权限 ID:`bitable:app`)。 + - 若有 **创建多维表格 / base:app:create** 相关权限,一并勾选。 + - 保存后,在「版本管理与发布」中**发布新版本**(否则权限不生效)。 + +4. **提醒** + - 页面提示「版本发布后,当前修改方可生效」→ 务必完成发布。 + +--- + +## 三、用户重新授权(必须) + +- 权限开通并发布后,**已授权用户不会自动获得新权限**,必须**重新走一遍授权**,拿到新的 access_token / refresh_token 才会带上述权限。 +- 操作任选其一: + - **方式 A**:本机运行一次 `python3 脚本/auto_log.py`,在需要时按提示用飞书扫码/授权(会用新 scope 拉授权页)。 + - **方式 B**:用浏览器打开本地服务 `http://localhost:5050` 的授权入口,重新授权一次。 +- 授权成功后,再执行上传脚本即可创建多维表格。 + +--- + +## 四、脚本侧已做的修改 + +- **auto_log.py**:授权链接的 `scope` 已增加 `bitable:app`、`base:app:create`,新授权会申请多维表格权限。 +- **feishu_api.py**:`/api/auth/url` 返回的授权地址已带上相同 scope。 +- 无需改脚本即可支持「上传 JSON → 按类型创建多维表格」,只需完成上述权限开通 + 重新授权。 + +--- + +## 五、小结(发给卡罗维亚/管理员) + +- **要开的权限**:用户身份权限 → `bitable:app`(及若有则勾选 `base:app:create`)。 +- **要做的动作**:开通 → 发布新版本 → 通知使用人**重新授权**一次。 +- **参考链接**:飞书错误说明 https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-resolve-error-99991679 + +--- + +**文档维护**:卡若AI 水桥 · 2026-03-02 diff --git a/02_卡人(水)/水桥_平台对接/飞书管理/脚本/auto_log.py b/02_卡人(水)/水桥_平台对接/飞书管理/脚本/auto_log.py index 7e95199e..a7f5e1dc 100644 --- a/02_卡人(水)/水桥_平台对接/飞书管理/脚本/auto_log.py +++ b/02_卡人(水)/水桥_平台对接/飞书管理/脚本/auto_log.py @@ -31,7 +31,8 @@ CONFIG = { 'TOKEN_FILE': os.path.join(os.path.dirname(__file__), '.feishu_tokens.json') } -AUTH_URL = f"https://open.feishu.cn/open-apis/authen/v1/authorize?app_id={CONFIG['APP_ID']}&redirect_uri=http%3A//localhost%3A{CONFIG['SERVICE_PORT']}/api/auth/callback&scope=wiki:wiki+docx:document+drive:drive" +# 授权 scope:wiki/docx/drive 用于日志与文档;bitable:app、base:app:create 用于创建多维表格(上传 JSON 按类型创建) +AUTH_URL = f"https://open.feishu.cn/open-apis/authen/v1/authorize?app_id={CONFIG['APP_ID']}&redirect_uri=http%3A//localhost%3A{CONFIG['SERVICE_PORT']}/api/auth/callback&scope=wiki:wiki+docx:document+drive:drive+bitable:app+base:app:create" WIKI_URL = f"https://cunkebao.feishu.cn/wiki/{CONFIG['WIKI_TOKEN']}" # ============ Token管理(静默) ============ diff --git a/02_卡人(水)/水桥_平台对接/飞书管理/脚本/feishu_api.py b/02_卡人(水)/水桥_平台对接/飞书管理/脚本/feishu_api.py index d400df6f..521be398 100644 --- a/02_卡人(水)/水桥_平台对接/飞书管理/脚本/feishu_api.py +++ b/02_卡人(水)/水桥_平台对接/飞书管理/脚本/feishu_api.py @@ -179,12 +179,16 @@ def health(): 'timestamp': datetime.now().isoformat() }) +# 用户授权 scope:含 wiki/docx/drive 与 多维表格 bitable:app、base:app:create(上传 JSON 创建多维表格用) +AUTH_SCOPE = "wiki:wiki+docx:document+drive:drive+bitable:app+base:app:create" + @app.route('/api/auth/url') def auth_url(): redirect_uri = request.args.get('redirect_uri', 'http://localhost:5050/api/auth/callback') + url = f"https://open.feishu.cn/open-apis/authen/v1/index?redirect_uri={urllib.parse.quote(redirect_uri)}&app_id={CONFIG['APP_ID']}&scope={urllib.parse.quote(AUTH_SCOPE)}" return jsonify({ 'status': 'ok', - 'auth_url': f"https://open.feishu.cn/open-apis/authen/v1/index?redirect_uri={urllib.parse.quote(redirect_uri)}&app_id={CONFIG['APP_ID']}" + 'auth_url': url }) @app.route('/api/auth/callback') diff --git a/02_卡人(水)/水桥_平台对接/飞书管理/脚本/upload_json_to_feishu_doc.py b/02_卡人(水)/水桥_平台对接/飞书管理/脚本/upload_json_to_feishu_doc.py index 1caecc0c..c686489f 100644 --- a/02_卡人(水)/水桥_平台对接/飞书管理/脚本/upload_json_to_feishu_doc.py +++ b/02_卡人(水)/水桥_平台对接/飞书管理/脚本/upload_json_to_feishu_doc.py @@ -252,7 +252,8 @@ def main(): pass else: print(f"❌ 多维表格创建失败:{err or '未知错误'}") - print(" 请检查应用是否具备「创建多维表格」权限(飞书开放平台 → 权限配置)") + print(" 需开通「用户身份权限」下的 bitable:app、base:app:create,并让用户重新授权。") + print(" 详见:02_卡人(水)/水桥_平台对接/飞书管理/参考资料/飞书多维表格权限开通说明_给卡罗维亚.md") sys.exit(1) print("=" * 50) return diff --git a/运营中枢/工作台/gitea_push_log.md b/运营中枢/工作台/gitea_push_log.md index eb0621ce..8737360f 100644 --- a/运营中枢/工作台/gitea_push_log.md +++ b/运营中枢/工作台/gitea_push_log.md @@ -194,3 +194,4 @@ | 2026-03-02 00:25:52 | 🔄 卡若AI 同步 2026-03-02 00:25 | 更新:水桥平台对接、运营中枢工作台 | 排除 >20MB: 14 个 | | 2026-03-02 02:30:31 | 🔄 卡若AI 同步 2026-03-02 02:30 | 更新:金仓、水桥平台对接、运营中枢工作台 | 排除 >20MB: 14 个 | | 2026-03-02 02:35:50 | 🔄 卡若AI 同步 2026-03-02 02:35 | 更新:水桥平台对接、卡木、运营中枢工作台 | 排除 >20MB: 14 个 | +| 2026-03-02 02:41:10 | 🔄 卡若AI 同步 2026-03-02 02:41 | 更新:水桥平台对接、卡木、运营中枢工作台 | 排除 >20MB: 14 个 | diff --git a/运营中枢/工作台/代码管理.md b/运营中枢/工作台/代码管理.md index 7c67d35e..4c4f394a 100644 --- a/运营中枢/工作台/代码管理.md +++ b/运营中枢/工作台/代码管理.md @@ -197,3 +197,4 @@ | 2026-03-02 00:25:52 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-02 00:25 | 更新:水桥平台对接、运营中枢工作台 | 排除 >20MB: 14 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | | 2026-03-02 02:30:31 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-02 02:30 | 更新:金仓、水桥平台对接、运营中枢工作台 | 排除 >20MB: 14 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | | 2026-03-02 02:35:50 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-02 02:35 | 更新:水桥平台对接、卡木、运营中枢工作台 | 排除 >20MB: 14 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | +| 2026-03-02 02:41:10 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-02 02:41 | 更新:水桥平台对接、卡木、运营中枢工作台 | 排除 >20MB: 14 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) |