应用端实验室移动应用
00 / 00
邮件登录与回调验证
移动端 Magic Link、验证邮件和 OAuth 回调的端侧检查方式
邮件服务本身是上层集成的事。移动端只关心一件事:用户点了邮件里的链接后,能不能回到 App 并顺利完成登录或验证。
你将学到
- Magic Link 从邮件到 App 的完整回调链路
- 验证邮件、OAuth 回调各自需要检查什么
- 链接过期时怎么给用户明确反馈
- 为什么真机测试比模拟器更可靠
回调链路
整条链路可以这样理解:
- 用户收到邮件 -- Magic Link 或验证邮件,由服务端发出
- 点击链接 -- 在浏览器或邮件客户端里打开
- 回到 App -- 通过 scheme 或 deep link 跳回 App
- 完成登录 -- session 写入,用户状态更新
中间任何一环断裂,用户都会卡住。所以移动端需要验证的不是邮件怎么发的,而是链接能不能把用户带回 App,回来之后状态是否正确。
邮件客户端对链接的处理方式各不相同。Gmail、Outlook、微信邮箱等可能在内置浏览器里打开链接,而不是直接跳转到 App。测试时要覆盖你用户最常用的邮件客户端。
端侧要验的
| 场景 | 要验证 |
|---|---|
| Magic Link | 链接能打开 App,session 写入成功 |
| 验证邮件 | 验证完后 App 能刷新用户状态 |
| OAuth | 第三方登录回跳不丢状态 |
| 链接过期 | 用户能看到明确提示,能重发 |
测试 Magic Link 时,用真机发一封真实的验证邮件,从邮件客户端点链接回到 App,确认 session 已经生效。模拟器和 curl 只能覆盖一部分场景。
对于链接过期的情况,确保 App 能显示友好的提示而不是技术错误码,并提供重新发送的入口。用户不应该需要手动复制链接或重新输入邮箱。
为什么真机测试很重要
模拟器能测大部分逻辑,但邮件回调有几个地方只有真机才能验证:
- 真实邮件客户端对链接的处理行为
- 系统级的 scheme 跳转和 App 唤醒
- Universal Links 在真机上的匹配规则
建议在开发中期就开始真机测试,不要等到提交商店前才发现回调链路不通。
常见问题排查
如果 Magic Link 回调不工作,按顺序检查:
app.json里的 scheme 是否和服务端NATIVE_APP_SCHEME一致.env.local里的EXPO_PUBLIC_APP_SCHEME是否和app.json一致- 开发环境用的是 development build 而不是 Expo Go(Expo Go 不支持自定义 scheme)
- 邮件里的链接格式是否正确,scheme 前缀有没有被邮件客户端改写
下一步
邮件回调验证通过后,进入 Deep Link 与外部跳转 了解 scheme、Universal Links 和分享链接的处理。
想和其他创造者交流?
这篇文档有问题?