深浅模式
Microsoft Account Manager:把账号、令牌和邮件先收进一个面板里
更新: 4/7/2026 字数: 0 字 时长: 0 分钟
前言
在开发和管理多个需要微软账号的项目时,我遇到了一个很实际的问题:账号多了之后,怎么管?
每个账号都有自己的:
- 邮箱地址和密码
- OAuth2 的 client_id 和 refresh_token
- 不同的用途和备注
- 需要定期刷新令牌
- 可能需要查看特定邮件
最开始,我用 Excel 表格记录,用脚本批量刷新,用不同的邮箱客户端登录查看邮件。但很快发现,这种分散的方式效率太低,而且容易出错。
于是,这些功能就被收进了一个工具里,这就是 Microsoft Account Manager 的由来。
项目定位
Microsoft Account Manager 是一个部署在 Cloudflare Workers 上的 Web 应用,主要解决以下几个问题:
- 集中存储:把所有微软账号信息存在一个地方
- 批量操作:支持导入、导出、批量刷新
- 状态监控:实时查看每个账号的刷新状态
- 邮件查看:不用登录邮箱客户端就能看邮件
- 自动化:提供 API 接口供其他系统调用
技术栈选择
前端:Vue 3 + Naive UI
- Vue 3:响应式开发体验好,生态成熟
- Naive UI:组件丰富,样式现代,开箱即用
- Vite:构建速度快,开发体验流畅
后端:Hono + Cloudflare D1
- Hono:轻量级 Web 框架,专门为边缘计算优化
- Cloudflare D1:Serverless SQL 数据库,与 Workers 无缝集成
- Cloudflare Workers:边缘部署,全球访问快
为什么选择 Cloudflare Workers?
- 免费额度足够:对于个人项目,免费 tier 完全够用
- 全球边缘网络:访问速度快,无论用户在哪里
- D1 数据库:Serverless SQL,不用自己维护数据库服务器
- 开发体验好:Wrangler CLI 工具链完善,本地开发方便
核心功能详解
1. 账号管理界面

支持:
- 添加单个账号
- 批量导入(文本粘贴或文件上传)
- 编辑和删除
- 搜索和筛选
2. 批量刷新令牌
微软的 Refresh Token 通常有 90 天有效期,需要定期刷新获取新的 Access Token。
这个功能可以:
- 刷新选中:只刷新选中的账号
- 刷新全部:一次性刷新所有账号
- 自动重试:失败时自动重试,记录错误原因
- 状态跟踪:实时显示刷新进度和结果
3. 邮件查看功能
这是我觉得最实用的功能之一。点击任意账号的"查看邮件"按钮,会弹出一个窗口:
左侧:邮件列表,显示发件人、主题、时间 右侧:邮件完整内容,支持 HTML 渲染
支持两种模式:
- Graph 模式:使用 Microsoft Graph API,功能完整但需要应用权限
- IMAP 模式:使用 IMAP 协议,兼容性更好
4. 外部 API 接口
为了方便其他系统调用,提供了几个关键 API:
bash
# 上传账号(用于自动化注册流程)
POST /api/ingest
Authorization: Bearer {INGEST_TOKEN}
# 获取账号列表
GET /api/accounts
Cookie: {session_cookie}
# 刷新指定账号
POST /api/accounts/{id}/refresh部署架构
用户浏览器
↓
Cloudflare CDN
↓
Cloudflare Worker (Hono 应用)
↓
Cloudflare D1 (SQLite 数据库)
↓
Microsoft Graph API / IMAP 服务器特点:
- 完全 Serverless,无需维护服务器
- 数据库自动备份和恢复
- 全球边缘部署,访问速度快
- 按使用量计费,成本可控
安全考虑
在开发过程中,安全是首要考虑的因素:
1. 数据加密
- 密码字段在数据库中使用加密存储
- Refresh Token 部分隐藏显示
- 传输使用 HTTPS
2. 访问控制
- 管理后台需要登录(HttpOnly Cookie)
- API 接口需要 Token 认证
- 会话有过期时间
3. 输入验证
- 所有输入都经过严格验证
- SQL 参数化查询,防止注入
- 文件上传限制类型和大小
实际应用场景
场景一:批量测试邮箱功能
在开发需要邮箱验证的应用时,我可以用这个工具:
- 导入一批测试账号
- 批量发送测试邮件
- 快速查看哪些账号收到了邮件
- 确认邮件内容是否正确
场景二:自动化注册流程
结合我之前开发的 CodeX Register 项目:
CodeX Register注册新账号- 通过 API 自动上传到
Microsoft Account Manager - 在新项目中直接使用这些账号
场景三:令牌生命周期管理
定期(比如每周)运行批量刷新:
- 确保所有 Refresh Token 有效
- 及时发现失效的账号
- 记录令牌刷新历史
开发中的挑战与解决
挑战一:IMAP 与 OAuth2 的兼容
微软的 IMAP 支持 OAuth2,但配置比较复杂。解决方案:
- 实现了两种认证方式:密码和 OAuth2
- 自动检测哪种方式可用
- 提供清晰的错误提示
挑战二:Worker 环境限制
Cloudflare Workers 有一些环境限制:
- 不能使用某些 Node.js 原生模块
- 执行时间有限制(10ms CPU 时间)
- 内存限制
解决方案:
- 使用 Web API 替代 Node.js API
- 优化代码,减少计算量
- 分批处理大量数据
挑战三:前端状态管理
账号数量多时,前端状态管理复杂:
- 表格分页和筛选
- 批量操作状态跟踪
- 实时更新刷新状态
解决方案:
- 使用 Vue 3 的 Composition API
- 实现乐观更新(先更新 UI,再等后端确认)
- 使用 WebSocket 或轮询获取实时状态
项目源码与使用
项目地址:https://github.com/Msg-Lbo/microsoft-account-manager
快速开始
bash
# 克隆项目
git clone https://github.com/Msg-Lbo/microsoft-account-manager
# 安装依赖
npm install
# 配置环境变量
cp .dev.vars.example .dev.vars
# 启动开发服务器
npm run dev部署到 Cloudflare
bash
# 登录 Cloudflare
npx wrangler login
# 创建 D1 数据库
npx wrangler d1 create account_manager_db
# 部署
npm run deploy未来规划
短期计划
- 邮件搜索功能:支持按关键词搜索邮件
- 批量导出:支持导出为 CSV/JSON 格式
- 统计图表:展示账号使用情况和刷新历史
长期计划
- 多提供商支持:不仅限于微软,支持 Gmail 等
- 浏览器扩展:一键保存账号到管理器
- 移动端适配:更好的移动端体验
总结
Microsoft Account Manager 是我为了解决实际工作中的痛点而开发的一个工具。它可能不是功能最强大的账号管理系统,但它确实解决了我遇到的几个关键问题:
- 集中管理:不再需要到处找账号信息
- 自动化:节省了手动刷新令牌的时间
- 便捷查看:快速查看邮件,不用切换多个客户端
- 可扩展:提供 API 接口,可以集成到其他系统
如果你也有批量管理微软账号的需求,或者对 Cloudflare Workers + D1 的技术栈感兴趣,欢迎查看项目源码或提出建议。
相关项目:
- CodeX Register:本地化的注册流程控制台
- Microsoft Graph API 使用指南:微软 Graph API 的详细使用方法
标签:Cloudflare · Workers · 账号管理 · OAuth2