我尝试使用 AngularFire 为经过验证的 Firebase 请求实施 DeviceCheck。使用 ReCaptchaV3 Validation 和 AngularFire 时,一切都在 webApp 中运行良好。
我根据文档https://firebase.google.com/docs/app-check/ios/devicecheck-provider?hl=en设置了必要的一切 ,并与 firebase 支持人员联系。
在 AppDelegate.swift
#if targetEnvironment(simulator)
let providerFactory = AppCheckDebugProviderFactory()
#else
let providerFactory = MyAppCheckProviderFactory()
#endif
AppCheck.setAppCheckProviderFactory(providerFactory)
// Use Firebase library to configure APIs
FirebaseApp.configure()
MyAppCheckProviderFactory.swift
class MyAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
#if targetEnvironment(simulator)
// App Attest is not available on simulators.
// Use a debug provider.
let provider = AppCheckDebugProvider(app: app)
// Print only locally generated token to avoid a valid token leak on CI.
print("Firebase App Check debug token: \(provider?.localDebugToken() ?? "" )")
return provider
#else
if #available(iOS 14.0, *) {
// Use App Attest provider on real devices.
return AppAttestProvider(app: app)
} else {
return DeviceCheckProvider(app: app)
}
#endif
}
}
根据文档,这应该足够(并且 App.entitlements 设置为生产)让它工作。也许 AngularFire 没有发送令牌?
有谁知道如何让它发挥作用?我考虑过使用 HTTP 拦截器并为每个请求手动添加 firebase 令牌,但无法弄清楚如何正确执行。
离子 5 Angular 12 “@angular/fire”:“^7.2.0”,“firebase”:“^9.6.2”,“rxfire”:“^6.0.2”,“rxjs”:“~6.6.0” ,