2Fauth-Cloudflare 开发日常:从 Web 到 Android

最近在做什么

最近主要在给 2Fauth-Cloudflare 做 Android 客户端。这次不走 WebView 加载网页,而是直接调 Worker 的 /api/v1 Bearer Token API。

体验上会更像原生应用:登录、刷新 token、读取条目、批量刷新 TOTP、生成 HOTP、复制验证码,都由 Android 端自己控制,不依赖网页状态。

几个必须做对的地方

界面可以简单,但基础流程不能有问题:

  • 登录后安全保存 access token 和 refresh token。
  • refresh token 会轮换,每次刷新后必须保存最新值,否则下次就失效。
  • 展示验证码前先做生物识别或设备凭据解锁。
  • 条目列表走 GET /api/v1/entries
  • TOTP 批量刷新走 POST /api/v1/codes/batch
  • HOTP 单独走对应条目的生成接口。

这些细节处理不好,用户感受到的就是“偶尔登录失效”“验证码刷新不稳定”“复制不顺手”。2FA 工具不能给人这种感觉。

同时维护服务端和客户端的好处

自己同时改 Worker 和 Android 客户端,有一个实实在在的好处:接口设计不需要猜。移动端哪里用起来别扭,服务端 API 可以马上调;服务端有新约束,移动端也能同步跟上。

clientType、token refresh 策略、批量验证码接口,这些都是两端配合着设计出来的,不是单方面拍板的。

后续想做的

功能倒不急着加,更想把日常使用中的小摩擦补掉:离线状态提示、验证码倒计时体验、分组筛选、搜索,以及更清楚的错误提示。

安全工具不需要功能很多,每个常用操作顺手比什么都强。