email_not_found
提供方未返回电子邮件地址。
这是什么?
当提供方在 OAuth 流程中未返回用户的电子邮件地址时,会发生此错误。
Better Auth 使用来自提供方的电子邮件来识别或创建用户账户。如果提供方遗漏电子邮件(或返回为空/未定义),我们无法继续,且请求会被拒绝。
此错误仅可能通过 OAuth 提供方出现。在非 OAuth 流程中不会发生。
常见原因
- 提供方配置中缺少或范围不足(例如,未请求
email)。 - 用户的电子邮件是私密的,默认不显示(例如,GitHub 私密邮箱)。
- 提供方仅通过单独的端点返回电子邮件,但未启用相应的范围/API 调用以获取电子邮件
(例如,GitHub 的user:email)。 - 提供方项目或租户配置错误(同意屏幕、管理员同意、受限的声明/属性)。
- 环境之间使用了不同的凭据(预览/测试/生产),而这些凭据请求的范围不相同。
如何解决
请求正确的范围
- 确保你的提供方配置请求了与电子邮件相关的范围。
验证提供方应用/控制台设置
- 在提供方的控制台确认应用有权限请求电子邮件,且同意屏幕允许请求电子邮件。
本地调试
- 检查发出的授权请求,确认其范围中包含所需的
email。 - 检查回调的负载(查询参数,
id_token中的声明,userinfo 响应)以查看是否存在电子邮件声明。 - 记录回调处理程序接收的提供方用户资料对象,验证是否包含
email。 - 检查当前使用的是哪个环境的提供方凭据,以及各环境中的范围是否一致。