飞书Python SDK 三步上手:装好 lark-oapi,10 分钟发出第一条消息
2026/8/22 18:18:48 网站建设 项目流程

飞书Python SDK 三步上手:装好 lark-oapi,10 分钟发出第一条消息

【免费下载链接】oapi-sdk-pythonLarksuite development interface SDK项目地址: https://gitcode.com/gh_mirrors/oa/oapi-sdk-python

飞书Python SDK(包名lark-oapi)是飞书开放平台官方服务端开发套件,封装了消息、通讯录、审批等 60 多个产品的 API 调用,外加事件订阅与 token 缓存,把 REST 接口调用压缩成几行 Python 代码。

项目速览:它到底能帮你做什么

自己裸调飞书接口时,你得逐一手动处理:tenant_access_token 怎么获取、事件推送的 CHALLENGE 校验怎么应答、AES 加密的负载怎么解密。lark-oapi 把这一整条链路装进了一个client对象:请求签名、token 自动续期、事件分发全部下沉到 lark_oapi/core/ 底层,你只管写业务。发消息、拉通讯录、发起审批,都用client.im.v1.message.create这类属性路径直接调用,不需要记 REST 细节。

上图是对照关系:文档里的接口 URL 路径与 SDK 调用路径一一对应,看接口文档时不用来回换算。

三步跑起来

  1. 环境准备:Python ≥ 3.8,无需其他前置依赖。
  2. 安装:一条命令即可:
python3 -m pip install lark-oapi
  1. 第一次成功调用:给群发一条文本消息。消息相关的请求模型都在 lark_oapi/api/im/v1/ 下:
import lark_oapi as lark from lark_oapi.api.im.v1 import * client = lark.Client.builder().app_id("cli_xxx").app_secret("SECRET").build() request = CreateMessageRequest.builder().receive_id_type("chat_id") \ .request_body(CreateMessageRequestBody.builder() .receive_id("oc_xxx").msg_type("text") .content('{"text":"hello"}').build()).build() print(client.im.v1.message.create(request))

想对照源码,可执行git clone https://gitcode.com/gh_mirrors/oa/oapi-sdk-python,仓库里samples/目录按场景放了可运行样例。

能力版图

目录职责一句话
lark_oapi/api/60 多个产品 API,按"产品 + 版本号"组织(im、contact、approval、bitable 等)
lark_oapi/event/事件分发器:验签、应答 CHALLENGE、按事件名路由到你的回调函数
lark_oapi/core/地基层:access_token 缓存、HTTP 传输、日志脱敏
lark_oapi/ws/WebSocket 长连接客户端,订阅事件不再依赖公网回调地址
lark_oapi/channel/机器人通道模块(已标记 legacy,新能力迁往独立包)
samples/各场景可运行样例:Flask 事件、卡片回调、长连接模式

从Demo到生产

🤖群机器人自动回复。痛:裸调 REST 要自己管 token 过期、receive_id 类型参数,写错一个就发不出去。接法:client.im.v1.message.create(request)一行发信,响应里直接带 message_id。效果:回复逻辑就是一个普通函数,群机器人当天上线。

接收并处理消息事件。痛:平台第一次推的是 CHALLENGE 校验请求,后面才跟加密负载,手动解析校验容易浪费半天。接法:用EventDispatcherHandler注册回调,验签解密 SDK 代劳:

handler = lark.EventDispatcherHandler.builder(lark.ENCRYPT_KEY, lark.VERIFICATION_TOKEN, lark.LogLevel.DEBUG) \ .register_p2_im_message_receive_v1(do_p2_im_message_receive_v1) \ .build()

效果:每个事件类型对应独立回调函数,新增事件只要多注册一行。

开发环境没有公网 IP。痛:事件订阅要求可访问的请求地址,本机或内网机器配不出来。接法:换长连接模式,lark_oapi/ws/ 里的客户端主动向平台拨出连接。效果:cli.start()一句,事件就开始推送,咱们在笔记本上就能开发联调。

配置与凭证

认证链路很短:把app_id+app_secret交给 SDK,它自动获取并缓存 tenant_access_token(租户级凭证),过期自动刷新,你不用写任何 token 逻辑。若订阅事件,还需在控制台"事件订阅"页取 Encrypt Key 和 Verification Token 两个值:

客户端初始化就是一条链式调用:lark.Client.builder().app_id(...).app_secret(...).build()。如果你的服务挂在 Flask 上,lark_oapi/adapter/flask/ 里的请求解析工具可以直接接住平台推送的原始报文。

常见踩坑速查

  • code 99991663、token 无效 → app_id 或 secret 抄错、环境变量名混用 → 打印环境变量复核,确认 ID 以 cli_ 开头
  • 接口返回access denied→ 权限范围没开通 → 在控制台"权限管理"启用对应 scope 并发布新版本
  • 事件订阅只收到 CHALLENGE、没有业务事件 → 请求地址没填或 Verification Token 不一致 → 在"事件订阅"页填请求地址,保持 Token 与代码中一致
  • UnmarshalException→ 平台响应字段类型有变动 → 升级 lark-oapi 到最新版,或拿原始响应手动处理
  • 长连接模式启动即失败 → APP_ID / APP_SECRET 未注入 → 启动前把环境变量配齐再调start()

下一步

🚀一键注册应用lark.register_app走设备流扫码建应用,可预填权限范围与事件订阅,省去控制台手工点选。

ClientAssertion 无密钥模式:用外部签名服务提供的 JWT 断言替代 app_secret,适合自研应用统一密钥托管。

长连接上生产:WebSocket 模式开发与生产同一套 API,多实例部署时注意负载均衡分摊连接。

样例库samples/下的可运行样例逐个跑一遍,是熟悉各场景最快的方式。

先把samples/event/flask_sample.py拷下来跑起来,把应用凭证的三个值替换进去,事件回调十分钟就能打通。卡住某个接口时,去lark_oapi/api/下对应产品的版本目录查,每个接口都有现成的请求/响应模型,照着填空即可。

【免费下载链接】oapi-sdk-pythonLarksuite development interface SDK项目地址: https://gitcode.com/gh_mirrors/oa/oapi-sdk-python

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询