# 飞书API集成模块使用指南
## 快速开始
### 1. 安装依赖
```bash
npm install express
```
### 2. 引入模块并配置
```typescript
import express from 'express';
import { createFeishuRouter } from './fmode-server/modules/fmode-feishu-api/src/index.ts';
const app = express();
// 创建飞书路由(直接传入配置)
const feishuRouter = createFeishuRouter({
'cli_a1b2c3d4e5f6g7h8': {
appId: 'cli_a1b2c3d4e5f6g7h8',
appSecret: 'your_app_secret_here',
company: 'your_company_id',
enabled: true
}
});
// 挂载到Express应用
app.use('/api/feishu', feishuRouter);
app.listen(3000, () => {
console.log('服务器启动在端口 3000');
});
```
### 3. 测试模块是否正常加载
访问 `http://localhost:3000/api/feishu/test` 查看模块状态。
## 配置说明
### 单个应用配置
```typescript
const feishuRouter = createFeishuRouter({
'cli_xxx': {
appId: 'cli_xxx', // 飞书应用ID
appSecret: 'your_secret', // 飞书应用密钥
company: 'company_id', // 公司ID(用于用户管理)
enabled: true // 是否启用
}
});
```
### 多个应用配置
```typescript
const feishuRouter = createFeishuRouter({
'app1': {
appId: 'cli_xxx1',
appSecret: 'secret1',
company: 'company1',
enabled: true
},
'app2': {
appId: 'cli_xxx2',
appSecret: 'secret2',
company: 'company2',
enabled: true
}
});
```
## OAuth2扫码登录
### 前端实现
```html
飞书登录
```
### 后端API调用
```typescript
// POST /api/feishu/oauth2/login
fetch('/api/feishu/oauth2/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
appId: 'cli_a1b2c3d4e5f6g7h8',
code: '授权码'
})
})
.then(res => res.json())
.then(data => {
console.log('登录成功:', data.data.sessionToken);
});
```
## 网页应用免登录
### 前端实现
```html
飞书应用
飞书应用
```
## API接口说明
### 1. OAuth2扫码登录
- **接口**: `POST /api/feishu/oauth2/login`
- **参数**: `{ appId, code }`
- **返回**: 用户信息、令牌信息、sessionToken
### 2. 网页应用免登录
- **接口**: `POST /api/feishu/oauth2/feishu`
- **参数**: `{ appId, code }`
- **返回**: 用户信息、sessionToken
### 3. 刷新OAuth2令牌
- **接口**: `POST /api/feishu/oauth2/refresh_token`
- **参数**: `{ appId, refreshToken }`
### 4. 同步用户信息
- **接口**: `POST /api/feishu/user/sync`
- **参数**: `{ appId, userInfo }`
### 5. 转发API请求
- **接口**: `POST /api/feishu/forward`
- **参数**: `{ appId, path, method, query, body }`
### 6. 获取Token状态
- **接口**: `POST /api/feishu/token/status`
- **参数**: `{ appId }`
### 7. 强制刷新Token
- **接口**: `POST /api/feishu/token/refresh`
- **参数**: `{ appId }`
## 与旧版本的区别
### 旧版本(繁琐)
```typescript
import { createFeishuRouter, feishuConfig } from 'fmode-feishu-api';
// 需要先单独配置
feishuConfig.setAppConfig('cli_xxx', {
appId: 'cli_xxx',
appSecret: 'secret',
company: 'company_id',
enabled: true
});
// 然后创建路由
const feishuRouter = createFeishuRouter();
app.use('/api/feishu', feishuRouter);
```
### 新版本(简洁)
```typescript
import { createFeishuRouter } from 'fmode-feishu-api';
// 直接传入配置,一步完成
const feishuRouter = createFeishuRouter({
'cli_xxx': {
appId: 'cli_xxx',
appSecret: 'secret',
company: 'company_id',
enabled: true
}
});
app.use('/api/feishu', feishuRouter);
```
## 常见问题
### 1. 如何获取飞书应用ID和密钥?
访问 [飞书开放平台](https://open.feishu.cn/) 创建企业自建应用。
### 2. 如何配置回调地址?
在飞书开放平台的应用配置中,设置"重定向URL"。
### 3. Token过期怎么办?
- `tenant_access_token`: 自动管理,有效期2小时,提前5分钟自动刷新
- `user_access_token`: 使用 `/oauth2/refresh_token` 接口刷新
### 4. 如何处理多个飞书应用?
在 `createFeishuRouter` 中传入多个应用配置即可。
## 技术支持
- [飞书开放平台文档](https://open.feishu.cn/document/)
- [项目源码](./src/)