iOS端App Attestation验证失败(Android正常),如何修复?
iOS App Check 403 "App attestation failed" 修复建议
以下是针对你遇到的iOS端App Check验证失败问题的具体修复步骤:
确认DeviceCheck密钥配置准确性
检查Firebase控制台中iOS App Check的DeviceCheck密钥:- 确保密钥关联的Apple开发者账号DeviceCheck私钥有效,Bundle ID与App完全一致,无拼写错误。
- 验证私钥是否在有效期内,未过期且已正确激活。
检查调试令牌配置
当前请求使用exchangeDebugToken,说明处于调试模式:- 需在Firebase控制台添加该iPhone 6s的调试令牌。可通过Xcode控制台或启动时打印
AppCheck.debugToken获取令牌,复制到控制台的调试令牌列表中(每个测试设备需单独添加)。
- 需在Firebase控制台添加该iPhone 6s的调试令牌。可通过Xcode控制台或启动时打印
验证App签名与权限
- 在Apple开发者后台的App ID配置中,确认已勾选DeviceCheck服务;Xcode中使用的签名证书需关联该App ID。
- 调试时确认Info.plist中添加了
FirebaseAppCheckDebugEnabled,正式环境需移除该配置,避免模式混淆。
确认DeviceCheck框架集成正确性
确保项目正确导入DeviceCheck框架,且App启动时正确初始化App Check:import Firebase import FirebaseAppCheck func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { FirebaseApp.configure() let providerFactory = AppCheckProviderFactory.deviceCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory) return true }检查Firebase项目规则与权限
- 确认Firebase控制台中App Check规则允许iOS App访问Firestore服务,无错误的拒绝策略。
- 检查项目IAM权限,确保Firebase App Check服务账号具备设备令牌验证的足够权限。
测试正式环境验证
若调试模式问题持续,可临时切换到正式模式:移除FirebaseAppCheckDebugEnabled配置,重新打包安装到真机,验证是否能正常通过App Check。若正式模式正常,说明调试令牌配置存在问题。验证设备系统版本
DeviceCheck要求iOS 11.0及以上,确认iPhone 6s的系统版本符合要求,避免因系统版本过低导致验证失败。
内容的提问来源于stack exchange,提问作者Luke
相关产品推荐
相关产品推荐

