已成功实现通过飞书服务端 API 获取多维表格中的广告内容,包括完整的后端服务器和前端集成。
-
完整的 Node.js + Express 服务器
- 位置:
api/server.js - 端口: 3000(可配置)
- 支持跨域请求(CORS)
- 位置:
-
飞书 API 集成
- ✅ 自动获取和缓存访问令牌
- ✅ 支持分页获取大量记录
- ✅ 从多维表格读取广告数据
- ✅ 安全的凭证管理(存储在
.env文件)
-
数据处理
- ✅ 字段映射(支持多种字段名变体)
- ✅ 数据验证和过滤
- ✅ 按优先级自动排序
- ✅ 日期范围检查
-
API 端点
GET /api/ads- 获取所有活跃广告GET /api/ads/:id- 获取特定广告GET /health- 健康检查
-
异步数据获取
- ✅ 从后端 API 获取广告数据
- ✅ 5秒超时保护
- ✅ 自动降级到备用广告
-
广告展示
- ✅ 支持三种广告类型(iframe、banner、card)
- ✅ 优先级排序
- ✅ 日期范围过滤
- ✅ 用户关闭记忆(sessionStorage)
-
错误处理
- ✅ API 失败时使用备用广告
- ✅ 详细的错误日志
- ✅ 优雅的降级机制
系统支持以下字段(包含多种命名变体):
| 字段功能 | 支持的字段名 | 类型 | 必填 |
|---|---|---|---|
| 广告ID | id, ad_id |
文本 | ✅ |
| 广告标题 | title, ad_title |
文本 | ⭕ |
| 广告链接 | url, ad_url, link |
URL | ✅ |
| 广告内容 | content, ad_content, description |
文本 | ⭕ |
| 广告图片 | imageUrl, image_url, ad_image |
URL | ⭕ |
| 广告标签 | tag, ad_tag, label |
文本 | ⭕ |
| 广告类型 | type |
单选 | ⭕ |
| 优先级 | priority |
单选 | ⭕ |
| 开始时间 | startDate, start_date, start_time |
日期 | ⭕ |
| 截止时间 | endDate, end_date, end_time |
日期 | ⭕ |
| 是否启用 | enabled |
复选框 | ⭕ |
- 登录飞书开放平台: https://open.feishu.cn/
- 创建企业自建应用
- 获取 App ID 和 App Secret
- 申请权限:
bitable:app或bitable:app:readonly - 获取多维表格的 App Token 和 Table ID
cd api
npm install
cp .env.example .env
# 编辑 .env 文件,填入飞书凭证
npm start前端代码已配置好,会自动从 /api/ads 获取数据。如果 API 不可用,会自动使用备用广告。
cd api
npm test测试内容:
- ✅ API 健康检查
- ✅ 广告端点响应
- ✅ CORS 配置
- ✅ 前端集成检查
-
启动后端服务器:
cd api npm start -
打开浏览器访问
test-ads.html进行可视化测试 -
测试 API 端点:
curl http://localhost:3000/health curl http://localhost:3000/api/ads
-
使用 PM2:
npm install -g pm2 cd api pm2 start server.js --name "ad-api" pm2 startup pm2 save
-
使用 Docker:
docker build -t ad-api ./api docker run -d -p 3000:3000 --env-file ./api/.env ad-api
-
配置 Nginx 反向代理:
location /api/ { proxy_pass http://localhost:3000/api/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }
✅ API 密钥存储在服务器端,不暴露给前端
✅ CORS 配置限制允许的来源
✅ iframe 沙箱限制潜在风险
✅ 输入验证和数据过滤
✅ 访问令牌自动缓存和刷新
✅ 错误处理和降级机制
✅ 无已知安全漏洞(npm audit 检查通过)
api/server.js- 后端 API 服务器api/package.json- 依赖配置api/.env.example- 环境变量示例api/.gitignore- Git 忽略配置api/README.md- API 详细文档api/test.js- 自动化测试脚本test-ads.html- 可视化测试页面
script.js- 更新广告系统集成逻辑AD_SYSTEM_README.md- 更新文档,添加实现细节
- ✅ 配置真实的飞书凭证(替换
api/.env中的测试值) - ✅ 在飞书中创建多维表格并填充广告数据
- ✅ 部署后端 API 到生产服务器
- ✅ 更新前端
apiEndpoint配置(如果需要) - ✅ 监控 API 性能和错误日志
如遇问题,请参考:
api/README.md- 详细的 API 文档AD_SYSTEM_README.md- 完整的系统文档- 后端日志输出
- 浏览器控制台错误信息
实现完成时间: 2026-02-12
版本: 1.0.0
状态: ✅ 已完成并通过测试