微信文件传 OneDrive,真正难的是平台限制不是上传接口

这个项目一开始想解决的问题很小:微信里收到文件以后,我想更顺手地把它放进 OneDrive,不想每次都手动来回切 App。

我原本以为难点会在上传接口、文件流或者 OneDrive 权限上。真正做下来才发现,最卡人的反而是平台规则:个人主体小程序不能怎么登录、哪些域名能不能直连、文件流到底能不能按我想的路径走。

所以这篇我主要按“问题是什么 / 方案怎么被逼着收敛 / 哪些地方最后只能妥协”来记,而不是把它写成一篇轻松的功能介绍。

一开始看起来很简单

微信小程序有 wx.chooseMessageFile,可以选择聊天里的文件。

Microsoft Graph API 有上传接口,可以把文件传到 OneDrive。

两边一拼,不就完了?

当然没有这么顺。

我是个人主体小程序。微信规定个人主体不能用 web-view 组件。也就是说,小程序里没法直接打开 Microsoft OAuth 授权页面,让用户像普通网页登录那样登录。

传统 OAuth 路线,直接堵死。

这不是代码写得好不好问题,是规则不让你走。

Device Code Flow:丑,但能用

后来想到 OAuth 2.0 里有 Device Code Flow,专门给没有浏览器输入环境的设备用。

流程大概是:

  1. 小程序向后端请求设备码;
  2. 用户拿到一串授权码;
  3. 用户打开 Microsoft 验证页面;
  4. 输入授权码并同意授权;
  5. 小程序轮询后端拿授权结果;
  6. 后端保存 refresh token,后续自动刷新。

这个体验不优雅。

让用户手动输一串字符,换我我也嫌烦。但如果先做自用版,忍一次就够了。

这是这次的第一个取舍:先接受一次性的笨体验,换来个人主体小程序可用。

后端放哪跑?

接下来是后端。

它需要处理 OAuth token 刷新,还要调用 Microsoft Graph API。最开始想过腾讯云函数,但免费额度不合适;租服务器又觉得太重。

最后选择 EdgeOne Pages Functions。

原因很现实:

  • 之前博客部署已经用过 EdgeOne;
  • 边缘函数够跑这几个接口;
  • Edge KV 正好可以存 token;
  • 不需要再维护一台服务器;
  • 成本暂时是 0 元。

最初设计里,四个接口就够:

接口 作用
获取设备码 / 轮询授权 完成 Microsoft 登录
创建上传会话 拿到 OneDrive upload URL
token 刷新 后端自动续期
删除文件 顺手补一个基础管理能力

这个方案不复杂,但边界清楚。

当时的一个架构想法

一开始我希望后端尽量不碰文件内容。

理想路径是:后端只负责获取 OneDrive 的 upload URL,小程序拿到 URL 后直接 PUT 到 OneDrive。

这样后端就是一个纯粹的“认证 + 调度”服务,文件流量不经过我。

这个想法很漂亮,也很省。

后来真正做 WeDrive 的时候,才发现微信小程序正式环境还有合法域名限制,OneDrive 上传会话返回的动态域名不一定能直接配置。于是后来的实现改成了 EdgeOne 代理上传分片。

但这篇记录的是当时的方案阶段。现在回头看,这个误判很有价值:纸面上最省流量的方案,不一定能穿过平台规则。

个人号如果公开产品化,会遇到什么

自用版能做,不代表公开产品就顺。

如果想给其他人用,问题会变多:

  • Device Code Flow 对普通用户不友好;
  • Microsoft 可能显示“未验证应用”警告;
  • 个人主体小程序审核存在不确定性;
  • 文件类能力天然涉及隐私说明和用户信任;
  • 后端代理上传后,流量成本也要重新算。

所以当时最理性的做法不是直接产品化,而是先跑通自用版。

把链路打通,知道每个坑在哪,再决定要不要往公开产品走。

顺便又修了一次凭据

当天半夜还有个插曲。

天天(我们的新 agent)突然不能回复。错误是:Provider authentication failed: Refresh session has been revoked

Nous 的 OAuth 凭据过期了。

上次小墨也出过一模一样的问题。看来 Nous 的 refresh token 如果一段时间不用,可能会被服务端吊销。

临时解决办法很粗暴:把爪爪的 auth.json 复制过去,重启 gateway,三分钟恢复。

但这不是长期方案。

多人共用一个 Nous 账号的 OAuth 凭据,迟早会出问题。后面要么给每个 agent 独立凭据,要么换更稳定的认证方式。

这是另一个提醒:AI 工作流里,最容易拖后腿的往往不是模型能力,而是凭据、权限、会话这些基础设施。

当时的结论

这次折腾让我对 WeDrive 有了一个更清楚的判断:它技术上可行,但不能一开始就按成熟产品来设计。

更合适的路线是:

  1. 先做自用版;
  2. 用 Device Code Flow 跑通授权;
  3. 用 EdgeOne Functions + KV 承担轻后端;
  4. 尽量少维护服务器;
  5. 等真实使用后,再判断要不要处理企业主体、应用验证和公开发布。

小工具最怕的不是“不够完美”。

小工具最怕的是还没证明自己有用,就先背上一整套产品化包袱。


微信文件传 OneDrive,真正难的是平台限制不是上传接口
https://nmdft.cn/2026/04/20/2026-04-20-wechat-onedrive-zero-cost/
作者
nmdft
发布于
2026年4月20日
许可协议

评论

邮箱仅用于识别评论者,不会公开显示。

评论加载中…