GitHub 提供程序: emails[0] 在空的 /user/emails 响应中读取未加保护的异常
作者: Nitjsefnie创建于 2026年9月9日更新于 2026年9月9日
问题描述
当 GitHub 个人资料没有公开的电子邮件时,GitHub 提供者的 userinfo.request 总是调用经过身份验证的 GET /user/emails 端点。如果该端点以 空列表 返回 200 状态码 - GitHub 可以返回此类结果,例如对于某些机器人/服务和受组织限制的帐户 - 提供者会抛出错误而不是返回个人资料(providers/GitHub.ts 中的回退代码块):
const emails: GitHubEmail[] = await res.json()
profile.email = (emails.find((e) => e.primary) ?? emails[0]).email在空数组 emails.find(...) ?? emails[0] 中,读取 .email 会引发 TypeError: Cannot read properties of undefined (reading 'email')。请求也会无条件地执行:在调用端点之前,没有任何检查来确保授予的权限是否包含 user:email。
内容来源: nextauthjs/next-auth