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

Flutter集成Sign in with Apple无法获取用户姓名问题求助

解决Flutter集成Sign in with Apple无法获取用户姓名的问题

核心原因

Apple仅在用户首次授权登录你的应用时返回姓名信息,且这个信息不在ID Token里,是直接在授权回调的凭证对象中返回的,后续重复登录不会再提供姓名。

具体解决步骤

  1. 确认授权权限配置
    调用getAppleIDCredential时,必须在scopes中添加fullName权限,否则Apple不会返回姓名:

    final credential = await SignInWithApple.getAppleIDCredential(
      scopes: [
        AppleIDAuthorizationScopes.email,
        AppleIDAuthorizationScopes.fullName, // 必须添加这个权限
      ],
      // 其他必要参数...
    );
    
  2. 直接从凭证对象获取姓名
    姓名不是从ID Token解码得到的,而是从AuthorizationCredentialAppleID对象中直接读取:

    // 提取用户姓名
    String? givenName = credential.givenName; // 用户的名
    String? familyName = credential.familyName; // 用户的姓
    
  3. 首次授权后自行存储姓名
    由于Apple仅在首次授权时返回姓名,拿到信息后要立刻存储到你的后端服务器或本地存储,后续用户登录时无法再从Apple获取该信息。

  4. 测试时重置授权状态
    如果之前已经授权过应用,需要先在iOS系统设置中移除授权,再重新测试:

    • 打开「设置」→ 点击顶部Apple ID → 「密码与安全性」→ 「使用Apple ID的应用」→ 找到你的应用并删除授权,之后重新发起登录流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 22:22:08