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

Apple Sign in联合登录接入Amplify后无法获取Auth Session的identity id与sub id

排查方案
  • 检查调用时机:确认是否在federatedSignIn的回调中直接调用fetchAuthSession,AWSMobileClient的federatedSignIn回调触发时,内部凭证还没有完全同步到Amplify的缓存层,此时立刻调用fetchAuthSession会触发等待超时。
  • 检查传参正确性:确认forWhichAuthProvider的取值严格为"apple",Cognito对联邦提供商名称大小写敏感,传错会导致校验卡住;同时确认传入的applegeneratedid是Apple登录返回的identity token,不是authorization code,参数传错会导致Cognito长时间校验失败触发超时。
  • 检查Cognito配置:确认身份池的联邦身份提供商配置中已经开启Apple登录选项,且填写的Bundle ID、Team ID和项目配置完全一致。
  • 检查版本兼容:你当前使用的Amplify 1.16.1搭配AWSMobileClient 2.26.5存在已知的状态同步Bug,两个版本的桥接层会出现缓存不同步的问题。
解决方案
  • 调整调用时机:federatedSignIn回调成功后,不要立刻调用fetchAuthSession,可以加1秒左右的延迟,或者监听Amplify Auth的Hub事件,收到signedIn事件后再调用fetchAuthSession,确保状态完全同步。
  • 改用官方推荐的登录实现:不要用Escape Hatch获取AWSMobileClient手动调用联邦登录,直接使用Amplify Auth提供的signInWithWebUI接口对接Apple Sign in,接口会自动处理状态同步,避免手动调用底层接口的同步问题,示例代码:
Amplify.Auth.signInWithWebUI(for: .apple, presentationAnchor: self.view.window!) { result in
    switch result {
    case .success:
        // 此处调用fetchAuthSession不会出现同步问题
    case .failure(let error):
        print("登录失败:\(error)")
    }
}
  • 如果必须保留现有手动联邦登录逻辑,可以升级依赖版本:Amplify升级到1.28.0+,对应的AWSMobileClient升级到2.30.0+,该版本已经修复了状态同步的Bug。
  • 不想升级版本可以手动加凭证刷新逻辑,在federatedSignIn成功后先主动刷新一次凭证再回调,示例代码:
client.federatedSignIn(providerName: forWhichAuthProvider, token: applegeneratedid) { states, error in
    if let error = error {
        completionHandler(false, .failed(error: error.localizedDescription))
    } else if let _ = states {
        // 手动刷新凭证确保同步完成
        client.getCredentials { _, error in
            if error == nil {
                completionHandler(true, nil)
            } else {
                completionHandler(false, .failed(error: error?.localizedDescription ?? ""))
            }
        }
    }
}
  • 如果以上方案都无效,可以开启Amplify调试日志排查具体错误:在App启动时添加代码Amplify.Logging.logLevel = .verbose,可以查看完整的Cognito请求返回内容,定位是否是权限配置类问题。

内容的提问来源于stack exchange,提问作者Paresh. P

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:06:03