如何通过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
相关产品推荐
相关产品推荐

