4.8 KiB
4.8 KiB
微博 OAuth2 扫码授权配置指南
功能说明
实现了微博 OAuth2 扫码授权功能,用户可以通过手机微博 APP 扫码快速添加账号,无需手动复制 Cookie。
配置步骤
1. 注册微博开放平台应用
-
访问 微博开放平台
-
登录你的微博账号
-
进入"微连接" > "网站接入"
-
创建新应用,填写应用信息:
- 应用名称:Weibo-HotSign(或自定义)
- 应用简介:微博自动签到系统
- 应用类型:网站
- 应用地址:http://localhost:5000(开发环境)
-
提交审核(测试阶段可以使用未审核的应用)
2. 配置回调地址
在应用管理页面:
- 进入"应用信息" > "高级信息"
- 设置"授权回调页"为:
http://localhost:5000/auth/weibo/callback - 保存设置
3. 获取 APP KEY 和 APP SECRET
在应用管理页面:
- 进入"应用信息" > "基本信息"
- 复制
App Key和App Secret
4. 配置环境变量
编辑 backend/.env 和 frontend/.env 文件:
# 微博 OAuth2 配置
WEIBO_APP_KEY=你的_App_Key
WEIBO_APP_SECRET=你的_App_Secret
WEIBO_REDIRECT_URI=http://localhost:5000/auth/weibo/callback
5. 重启服务
# 停止所有服务
stop_all.bat
# 启动所有服务
start_all.bat
使用流程
用户端操作
- 登录系统后,进入"添加账号"页面
- 切换到"微博授权"标签页
- 点击"生成授权二维码"按钮
- 使用手机微博 APP 扫描二维码
- 在手机上点击"同意授权"
- 等待页面自动完成账号添加
- 自动跳转到 Dashboard
技术流程
-
生成授权 URL
- 前端调用
/auth/weibo/authorize接口 - 后端生成包含
state参数的授权 URL - 前端使用 QRCode.js 生成二维码
- 前端调用
-
用户扫码授权
- 用户用手机微博扫码
- 跳转到微博授权页面(移动端适配)
- 用户点击"同意授权"
-
微博回调
- 微博跳转到
/auth/weibo/callback?code=xxx&state=xxx - 后端用
code换取access_token - 调用微博 API 获取用户信息
- 更新授权状态为成功
- 微博跳转到
-
前端轮询
- 前端每 2 秒轮询
/auth/weibo/check/<state> - 检测到授权成功后,调用
/api/weibo/add-account - 自动添加账号到系统
- 前端每 2 秒轮询
-
完成添加
- 账号添加成功
- 跳转到 Dashboard
API 接口说明
1. 生成授权 URL
GET /auth/weibo/authorize
返回:
{
"auth_url": "https://api.weibo.com/oauth2/authorize?...",
"state": "random_state_string",
"expires_in": 180
}
2. 检查授权状态
GET /auth/weibo/check/<state>
返回:
{
"status": "pending|success|error|expired",
"account_info": {...} // 仅在 success 时返回
}
3. 微博回调
GET /auth/weibo/callback?code=xxx&state=xxx
返回 HTML 页面,显示授权结果
4. 添加账号
POST /api/weibo/add-account
Content-Type: application/json
{
"state": "state_string",
"remark": "备注(可选)"
}
返回:
{
"success": true,
"message": "Account added successfully",
"account": {...}
}
安全说明
- State 参数:用于防止 CSRF 攻击,每次授权生成唯一的 state
- Session 存储:授权状态临时存储在 session 中(生产环境建议使用 Redis)
- Token 加密:access_token 会被加密存储在数据库中
- HTTPS:生产环境必须使用 HTTPS
生产环境配置
1. 更新回调地址
WEIBO_REDIRECT_URI=https://yourdomain.com/auth/weibo/callback
2. 在微博开放平台更新回调地址
进入应用管理 > 高级信息 > 授权回调页:
https://yourdomain.com/auth/weibo/callback
3. 使用 Redis 存储授权状态
修改 frontend/app.py,将 session 存储改为 Redis 存储。
故障排查
问题1:二维码生成失败
- 检查
WEIBO_APP_KEY是否配置正确 - 检查网络连接
问题2:扫码后提示"回调地址不匹配"
- 检查
WEIBO_REDIRECT_URI是否与微博开放平台配置一致 - 确保包含协议(http:// 或 https://)
问题3:授权成功但添加账号失败
- 检查后端 API 服务是否正常运行
- 查看后端日志排查错误
问题4:二维码过期
- 默认有效期 3 分钟
- 重新生成二维码即可
注意事项
- 微博开放平台应用需要审核,测试阶段可以使用未审核的应用
- 未审核的应用只能授权给应用创建者和测试账号
- 建议使用小号或测试账号进行测试
- access_token 有效期通常为 30 天,过期后需要重新授权
- 生产环境必须使用 HTTPS