**实现内容**: 1. **微博OAuth 2.0登录** - 实现完整的OAuth授权流程 - 支持开发模式(模拟数据)和生产模式(真实API) - 自动判断运行模式,无需手动切换 2. **微博账号绑定** - 获取授权URL接口:GET /api/weibo/bind-url - 处理授权回调:GET /api/weibo/callback - 绑定状态查询:GET /api/weibo/status - 解除绑定:DELETE /api/weibo/unbind 3. **超话功能(模拟实现)** - 超话列表查询:GET /api/topic/list - 单个签到:POST /api/topic/signin - 批量签到:POST /api/topic/batch-signin - 签到记录:GET /api/topic/records - 同步超话:POST /api/topic/sync 4. **环境配置** - 新增server/.env配置文件 - 支持环境变量配置微博App Key/Secret - 安装@nestjs/config依赖 5. **技术文档** - 创建WEIBO_INTEGRATION_GUIDE.md完整接入指南 - 包含微博开放平台配置步骤 - 提供OAuth 2.0授权流程说明 - 详细的风险提示和安全建议 **重要说明**: - 超话功能目前使用模拟数据,真实实现需要调用微博移动端非官方API - 非官方API存在法律和技术风险,使用需谨慎 - 系统已预留真实API接口实现位置和注释说明
7.1 KiB
7.1 KiB
微博OAuth 2.0 接入指南
一、微博开放平台配置
1. 注册开发者账号
访问 微博开放平台,注册并认证开发者账号。
2. 创建应用
- 登录微博开放平台
- 点击"创建应用"
- 选择"网页应用"或"移动应用"
- 填写应用信息:
- 应用名称:你的小程序名称
- 应用类型:选择合适类型
- 应用描述:简要说明应用功能
3. 获取App Key和App Secret
创建应用后,在应用详情页可以看到:
- App Key:应用的唯一标识
- App Secret:应用的密钥(需保密)
4. 配置回调地址
在应用设置中,配置授权回调地址:
https://your-domain.com/api/weibo/callback
开发环境可配置为:
http://localhost:3000/api/weibo/callback
二、环境变量配置
编辑 server/.env 文件,填入真实的微博配置:
# 微博开放平台配置
WEIBO_APP_KEY=你的App_Key
WEIBO_APP_SECRET=你的App_Secret
WEIBO_REDIRECT_URI=http://localhost:3000/api/weibo/callback
# JWT配置
JWT_SECRET=你的JWT密钥(建议使用随机字符串)
注意:
WEIBO_REDIRECT_URI必须与微博开放平台配置的回调地址一致JWT_SECRET建议使用强密码,用于签名JWT Token
三、OAuth 2.0授权流程
流程图
用户 → 点击"绑定微博" → 跳转微博授权页 → 用户授权 → 回调到你的应用 → 获取access_token → 保存绑定信息
详细步骤
1. 获取授权URL
请求:
GET /api/weibo/bind-url
Authorization: Bearer {微信JWT Token}
响应:
{
"code": 200,
"msg": "success",
"data": {
"bindUrl": "https://api.weibo.com/oauth2/authorize?client_id={app_key}&redirect_uri={redirect_uri}&response_type=code&state={state}",
"devMode": false
}
}
2. 用户授权
前端跳转到 bindUrl,用户在微博页面登录并授权。
3. 处理回调
用户授权后,微博会重定向到:
{redirect_uri}?code={授权码}&state={state}
后端自动处理回调,获取access_token并保存绑定信息。
4. 检查绑定状态
请求:
GET /api/weibo/status
Authorization: Bearer {微信JWT Token}
响应:
{
"code": 200,
"msg": "success",
"data": {
"bound": true,
"weiboName": "微博昵称"
}
}
四、开发模式 vs 生产模式
系统自动判断运行模式:
开发模式(未配置微博App Key)
触发条件:
WEIBO_APP_KEY为空或为your_weibo_app_key
行为:
- 使用模拟数据
- 不需要真实的微博账号
- 适合开发和测试
生产模式(已配置真实App Key)
触发条件:
WEIBO_APP_KEY为真实的App Key
行为:
- 调用真实的微博API
- 需要用户真实授权
- 获取真实的微博用户信息
五、超话功能说明
重要警告
⚠️ 微博官方不提供超话API,所有超话功能均基于移动端API逆向分析实现。
技术方案
1. 获取超话列表
接口(非官方):
GET https://m.weibo.cn/api/container/getIndex?containerid=100803
Headers: Cookie: SUB={access_token}
2. 超话签到
接口(非官方):
POST https://m.weibo.cn/ajax/statuses/checkin
Headers: Cookie: SUB={access_token}
Body: containerid=100808{超话ID}
风险提示
- 接口不稳定:微博可能随时更改接口
- 账号风险:频繁调用可能导致账号被限制
- 法律风险:使用非官方API可能违反微博服务条款
当前实现
系统目前使用模拟数据,真实实现需要:
- 修改
topic.service.ts中的mockWeiboSignin方法 - 实现真实的API调用逻辑
- 处理各种异常情况
六、测试流程
1. 测试开发模式
# 1. 确保.env中的微博配置为默认值
WEIBO_APP_KEY=your_weibo_app_key
# 2. 启动服务
cd /workspace/projects
coze dev
# 3. 测试登录
curl -X POST http://localhost:3000/api/auth/dev-login
# 4. 测试绑定微博
curl -X POST http://localhost:3000/api/weibo/dev-bind \
-H "Authorization: Bearer {token}"
2. 测试生产模式
# 1. 配置真实的微博App Key
WEIBO_APP_KEY=真实的App_Key
WEIBO_APP_SECRET=真实的App_Secret
# 2. 启动服务
coze dev
# 3. 获取授权URL
curl -X GET http://localhost:3000/api/weibo/bind-url \
-H "Authorization: Bearer {token}"
# 4. 在浏览器中访问授权URL,完成授权
# 5. 检查绑定状态
curl -X GET http://localhost:3000/api/weibo/status \
-H "Authorization: Bearer {token}"
七、常见问题
Q1: 授权后回调失败?
原因:回调地址配置不一致
解决:
- 检查微博开放平台的回调地址配置
- 确保
.env中的WEIBO_REDIRECT_URI与平台配置一致 - 注意URL编码问题
Q2: access_token过期怎么办?
原因:微博OAuth Token有效期有限
解决:
- 微博OAuth2.0没有refresh_token
- 需要用户重新授权
- 在
weibo.service.ts中实现Token刷新逻辑
Q3: 超话签到失败?
原因:非官方API不稳定
解决:
- 检查access_token是否有效
- 降低调用频率
- 添加重试机制
Q4: 如何在生产环境部署?
步骤:
- 申请微博开发者账号
- 创建应用并配置回调地址
- 配置生产环境的环境变量
- 部署后端服务
- 配置前端域名
八、API接口文档
认证相关
POST /api/auth/dev-login
开发环境模拟登录
POST /api/auth/wechat-login
微信登录(需配置微信AppID)
GET /api/auth/me
获取当前用户信息
微博相关
GET /api/weibo/bind-url
获取微博授权URL
GET /api/weibo/callback
微博授权回调(自动处理)
POST /api/weibo/dev-bind
开发环境模拟绑定微博
GET /api/weibo/status
获取微博绑定状态
DELETE /api/weibo/unbind
解除微博绑定
超话相关
GET /api/topic/list
获取超话列表
POST /api/topic/signin
单个超话签到
POST /api/topic/batch-signin
批量签到
GET /api/topic/records
获取签到记录
九、技术架构
微信用户登录(JWT认证)
↓
微博账号绑定(OAuth 2.0)
↓
超话数据同步(非官方API)
↓
签到功能(模拟实现)
数据流转
- 用户通过微信登录 → 获得JWT Token
- 使用Token调用绑定接口 → 跳转微博授权
- 微博授权成功 → 获取access_token → 保存到数据库
- 使用access_token调用超话API → 获取超话列表
- 用户点击签到 → 调用签到API → 记录签到数据
十、安全建议
- 保护App Secret:不要在代码中硬编码,使用环境变量
- HTTPS传输:生产环境必须使用HTTPS
- Token管理:妥善保存用户Token,定期清理过期Token
- 频率限制:避免频繁调用微博API
- 数据加密:敏感数据(如access_token)应加密存储
联系支持
如有问题,请联系:
- 微博开放平台:https://open.weibo.com/
- 项目Issue:提交到你的项目仓库