You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Firebase Apple登录获取用户邮箱与全名?

使用Firebase AppleAuthProvider获取用户全名和邮箱

当你通过Firebase的AppleAuthProvider添加email和name权限范围后,用户的全名和邮箱信息会通过UserCredential的additionalUserInfo.profile字段返回,具体获取方式如下:

完整代码示例

final AppleAuthProvider appleAuth = AppleAuthProvider();
appleAuth.addScope('email');
appleAuth.addScope('name');

final UserCredential authResult = await FirebaseAuth.instance
        .signInWithAuthProvider(appleAuth);

// 提取用户信息
final profile = authResult.additionalUserInfo?.profile;
if (profile != null) {
  // 获取全名:given_name对应名,family_name对应姓
  final String givenName = profile['given_name'] ?? '';
  final String familyName = profile['family_name'] ?? '';
  final String fullName = '$givenName $familyName'.trim();
  
  // 获取邮箱:优先从profile取,兜底使用user对象的email字段
  final String? email = profile['email'] ?? authResult.user?.email;
  
  // 重要提示:务必将全名和邮箱存入你的数据库(如Firestore)
  // 因为Apple仅在用户首次授权时返回这些信息,后续登录不会再提供
}

关键注意事项

  • 首次授权限制:Apple只会在用户第一次使用Apple登录你的应用时返回全名和邮箱,后续登录(包括重新登录)不会再返回这些敏感信息,因此必须在首次登录时将数据持久化到自己的后端或数据库中。
  • 邮箱兜底逻辑:如果用户之前已授权过邮箱,authResult.user?.email也能拿到邮箱地址,但全名只能在首次授权时从profile中获取。
  • 数据同步问题:如果用户后续修改了Apple ID的姓名,Firebase不会自动同步该变更,需要用户重新授权或手动更新你数据库中的信息。

内容的提问来源于stack exchange,提问作者samUser1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 19:03:30