diff --git a/packages/firebase_app_check/firebase_app_check/android/src/main/java/io/flutter/plugins/firebase/appcheck/FlutterFirebaseAppCheckPlugin.java b/packages/firebase_app_check/firebase_app_check/android/src/main/java/io/flutter/plugins/firebase/appcheck/FlutterFirebaseAppCheckPlugin.java index a41d916f2db8..be03122ef7d6 100644 --- a/packages/firebase_app_check/firebase_app_check/android/src/main/java/io/flutter/plugins/firebase/appcheck/FlutterFirebaseAppCheckPlugin.java +++ b/packages/firebase_app_check/firebase_app_check/android/src/main/java/io/flutter/plugins/firebase/appcheck/FlutterFirebaseAppCheckPlugin.java @@ -111,6 +111,13 @@ private Task activate(Map arguments) { PlayIntegrityAppCheckProviderFactory.getInstance()); break; } + case recaptchaEnterprise: + { + FirebaseAppCheck firebaseAppCheck = getAppCheck(arguments); + firebaseAppCheck.installAppCheckProviderFactory( + ReCaptchaEnterpriseAppCheckProviderFactory.getInstance()); + break; + } } taskCompletionSource.setResult(null); } catch (Exception e) { diff --git a/packages/firebase_app_check/firebase_app_check/ios/firebase_app_check/Sources/firebase_app_check/FLTAppCheckProvider.m b/packages/firebase_app_check/firebase_app_check/ios/firebase_app_check/Sources/firebase_app_check/FLTAppCheckProvider.m index aacddaf48f2f..a24feedb64e6 100644 --- a/packages/firebase_app_check/firebase_app_check/ios/firebase_app_check/Sources/firebase_app_check/FLTAppCheckProvider.m +++ b/packages/firebase_app_check/firebase_app_check/ios/firebase_app_check/Sources/firebase_app_check/FLTAppCheckProvider.m @@ -49,6 +49,10 @@ - (void)configure:(FIRApp *)app self.delegateProvider = [[FIRDeviceCheckProvider alloc] initWithApp:app]; } } + + if ([providerName isEqualToString:@"recaptchaEnterprise"]) { + self.delegateProvider = [[FIRReCaptchaEnterpriseProvider alloc] initWithApp:app]; + } } - (void)getTokenWithCompletion:(nonnull void (^)(FIRAppCheckToken *_Nullable, diff --git a/packages/firebase_app_check/firebase_app_check/lib/firebase_app_check.dart b/packages/firebase_app_check/firebase_app_check/lib/firebase_app_check.dart index df0e9641fe25..9e9db6b8a165 100644 --- a/packages/firebase_app_check/firebase_app_check/lib/firebase_app_check.dart +++ b/packages/firebase_app_check/firebase_app_check/lib/firebase_app_check.dart @@ -20,7 +20,8 @@ export 'package:firebase_app_check_platform_interface/firebase_app_check_platfor AppleAppAttestProvider, AppleAppAttestWithDeviceCheckFallbackProvider, ReCaptchaEnterpriseProvider, - ReCaptchaV3Provider; + AndroidReCaptchaEnterpriseProvider, + AppleReCaptchaEnterpriseProvider; export 'package:firebase_core_platform_interface/firebase_core_platform_interface.dart' show FirebaseException; diff --git a/packages/firebase_app_check/firebase_app_check_platform_interface/lib/src/android_providers.dart b/packages/firebase_app_check/firebase_app_check_platform_interface/lib/src/android_providers.dart index c827b3184022..9790a4983a84 100644 --- a/packages/firebase_app_check/firebase_app_check_platform_interface/lib/src/android_providers.dart +++ b/packages/firebase_app_check/firebase_app_check_platform_interface/lib/src/android_providers.dart @@ -32,3 +32,12 @@ class AndroidDebugProvider extends AndroidAppCheckProvider { class AndroidPlayIntegrityProvider extends AndroidAppCheckProvider { const AndroidPlayIntegrityProvider() : super('playIntegrity'); } + +/// ReCaptcha Enterprise provider for Android. +/// +/// See documentation: +class AndroidReCaptchaEnterpriseProvider extends AndroidAppCheckProvider { + const AndroidReCaptchaEnterpriseProvider(this.siteKey) + : super('recaptchaEnterprise'); + final String siteKey; +} diff --git a/packages/firebase_app_check/firebase_app_check_platform_interface/lib/src/apple_providers.dart b/packages/firebase_app_check/firebase_app_check_platform_interface/lib/src/apple_providers.dart index 5e6af1ce2359..eb1868e385f5 100644 --- a/packages/firebase_app_check/firebase_app_check_platform_interface/lib/src/apple_providers.dart +++ b/packages/firebase_app_check/firebase_app_check_platform_interface/lib/src/apple_providers.dart @@ -54,3 +54,12 @@ class AppleAppAttestWithDeviceCheckFallbackProvider const AppleAppAttestWithDeviceCheckFallbackProvider() : super('appAttestWithDeviceCheckFallback'); } + +/// ReCaptcha Enterprise provider for Apple platforms. +/// +/// See documentation: +class AppleReCaptchaEnterpriseProvider extends AppleAppCheckProvider { + const AppleReCaptchaEnterpriseProvider(this.siteKey) + : super('recaptchaEnterprise'); + final String siteKey; +} diff --git a/tests/integration_test/firebase_app_check/firebase_app_check_e2e_test.dart b/tests/integration_test/firebase_app_check/firebase_app_check_e2e_test.dart index 61950b98d28a..18dafa6aaefe 100644 --- a/tests/integration_test/firebase_app_check/firebase_app_check_e2e_test.dart +++ b/tests/integration_test/firebase_app_check/firebase_app_check_e2e_test.dart @@ -103,6 +103,36 @@ void main() { }, skip: defaultTargetPlatform != TargetPlatform.iOS, ); + + test( + 'recaptchaEnterprise on Android', + () async { + await expectLater( + FirebaseAppCheck.instance.activate( + providerAndroid: const AndroidReCaptchaEnterpriseProvider( + siteKey: '6Lemcn0dAAAAABLkf6aiiHvpGD6x-zF3nOSDU2M8', + ), + ), + completes, + ); + }, + skip: defaultTargetPlatform != TargetPlatform.android, + ); + + test( + 'recaptchaEnterprise on iOS', + () async { + await expectLater( + FirebaseAppCheck.instance.activate( + providerApple: const AppleReCaptchaEnterpriseProvider( + siteKey: '6Lemcn0dAAAAABLkf6aiiHvpGD6x-zF3nOSDU2M8', + ), + ), + completes, + ); + }, + skip: defaultTargetPlatform != TargetPlatform.iOS, + ); }, ); }

AltStyle によって変換されたページ (->オリジナル) /