Flutter接入Apple Sign In时输入正确密码后无限加载无法完成流程
排查解决步骤
- 首先验证
sign_in_with_apple依赖包版本兼容性
你使用的Flutter 2.5.0 + iOS15 模拟器组合,低于3.2.0版本的sign_in_with_apple存在已知的iOS15适配bug,会导致正确验证后无限挂起无返回。请检查pubspec.yaml中该依赖版本,升级到sign_in_with_apple: ^3.2.0及以上适配版本后重试。 - 检查Xcode与开发者账号配置
- 确认Xcode项目的
Signing & Capabilities标签页中已经添加Sign in with Apple能力 - 确认Apple开发者账号中对应bundle ID的Sign in with Apple开关已开启
- 确认Firebase控制台中Authentication的Apple登录provider已启用,且配置的bundle ID与项目完全一致
- 确认Xcode项目的
- 修复iOS模拟器配置
iOS15模拟器的Apple登录存在原生层缺陷,需要提前在模拟器的「设置」中登录iCloud账号并开启双重认证,不要直接在登录弹窗中输入账号密码,否则会出现验证后无响应的问题。如果调整后仍存在异常,直接使用真机测试即可排除模拟器本身的bug。 - 验证nonce参数合法性
确保你传入的nonce为非空、符合要求的随机字符串,不能为null或者空串,若nonce是异步生成需确认生成完成后再调用getAppleIDCredential方法。 - 补充异常捕获定位错误
你当前无报错是因为未捕获PlatformException类型的原生错误,给当前代码段添加try-catch即可拿到具体错误信息:
try { final appleCredential = await siwa.SignInWithApple.getAppleIDCredential( scopes: [ siwa.AppleIDAuthorizationScopes.email, siwa.AppleIDAuthorizationScopes.fullName, ], nonce: nonce, ); // 后续业务逻辑 } catch (err) { print("Apple登录错误: $err"); }
内容的提问来源于stack exchange,提问作者Aymeric Le Feyer
相关产品推荐
相关产品推荐

