diff --git a/packages/firebase_auth/firebase_auth/ios/firebase_auth/Sources/firebase_auth/FLTFirebaseAuthPlugin.m b/packages/firebase_auth/firebase_auth/ios/firebase_auth/Sources/firebase_auth/FLTFirebaseAuthPlugin.m index 102937d1ff53..c55ea4144e03 100644 --- a/packages/firebase_auth/firebase_auth/ios/firebase_auth/Sources/firebase_auth/FLTFirebaseAuthPlugin.m +++ b/packages/firebase_auth/firebase_auth/ios/firebase_auth/Sources/firebase_auth/FLTFirebaseAuthPlugin.m @@ -101,7 +101,6 @@ @interface FLTFirebaseAuthPlugin () @end @implementation FLTFirebaseAuthPlugin { -#if TARGET_OS_IPHONE // Map an id to a MultiFactorSession object. NSMutableDictionary *_multiFactorSessionMap; @@ -114,8 +113,6 @@ @implementation FLTFirebaseAuthPlugin { // Map an id to a MultiFactorResolver object. NSMutableDictionary *_multiFactorTotpSecretMap; -#endif - NSObject *_binaryMessenger; NSMutableDictionary *_eventChannels; NSMutableDictionary *> *_streamHandlers; @@ -133,13 +130,10 @@ - (instancetype)init:(NSObject *)messenger { _eventChannels = [NSMutableDictionary dictionary]; _streamHandlers = [NSMutableDictionary dictionary]; -#if TARGET_OS_IPHONE _multiFactorSessionMap = [NSMutableDictionary dictionary]; _multiFactorResolverMap = [NSMutableDictionary dictionary]; _multiFactorAssertionMap = [NSMutableDictionary dictionary]; _multiFactorTotpSecretMap = [NSMutableDictionary dictionary]; - -#endif } return self; } @@ -156,13 +150,10 @@ + (void)registerWithRegistrar:(NSObject *)registrar { [registrar addApplicationDelegate:instance]; SetUpFirebaseAuthHostApi(registrar.messenger, instance); SetUpFirebaseAuthUserHostApi(registrar.messenger, instance); - -#if TARGET_OS_IPHONE SetUpMultiFactorUserHostApi(registrar.messenger, instance); SetUpMultiFactoResolverHostApi(registrar.messenger, instance); SetUpMultiFactorTotpHostApi(registrar.messenger, instance); SetUpMultiFactorTotpSecretHostApi(registrar.messenger, instance); -#endif } + (FlutterError *)convertToFlutterError:(NSError *)error { @@ -509,11 +500,6 @@ - (void)handleMultiFactorError:(AuthPigeonFirebaseApp *)app completion:(nonnull void (^)(PigeonUserCredential *_Nullable, FlutterError *_Nullable))completion withError:(NSError *_Nullable)error { -#if TARGET_OS_OSX - completion(nil, [FlutterError errorWithCode:@"second-factor-required" - message:error.description - details:nil]); -#else FIRMultiFactorResolver *resolver = (FIRMultiFactorResolver *)error.userInfo[FIRAuthErrorUserInfoMultiFactorResolverKey]; @@ -554,7 +540,6 @@ - (void)handleMultiFactorError:(AuthPigeonFirebaseApp *)app completion(nil, [FlutterError errorWithCode:@"second-factor-required" message:error.description details:output]); -#endif } static void launchAppleSignInRequest(FLTFirebaseAuthPlugin *object, AuthPigeonFirebaseApp *app, @@ -835,13 +820,11 @@ - (void)ensureAPNSTokenSetting { #endif } -#if !TARGET_OS_OSX - (FIRMultiFactor *)getAppMultiFactorFromPigeon:(nonnull AuthPigeonFirebaseApp *)app { FIRAuth *auth = [self getFIRAuthFromAppNameFromPigeon:app]; FIRUser *currentUser = auth.currentUser; return currentUser.multiFactor; } -#endif - (nonnull ASPresentationAnchor)presentationAnchorForAuthorizationController: (nonnull ASAuthorizationController *)controller API_AVAILABLE(macos(10.15), ios(13.0)) { @@ -852,12 +835,16 @@ - (nonnull ASPresentationAnchor)presentationAnchorForAuthorizationController: #endif } -#if TARGET_OS_IPHONE - - (void)enrollPhoneApp:(nonnull AuthPigeonFirebaseApp *)app assertion:(nonnull PigeonPhoneMultiFactorAssertion *)assertion displayName:(nullable NSString *)displayName completion:(nonnull void (^)(FlutterError *_Nullable))completion { +#if TARGET_OS_OSX + completion([FlutterError errorWithCode:@"unsupported-platform" + message:@"Phone authentication is not supported on macOS" + details:nil]); +#else + FIRMultiFactor *multiFactor = [self getAppMultiFactorFromPigeon:app]; FIRPhoneAuthCredential *credential = @@ -879,6 +866,7 @@ - (void)enrollPhoneApp:(nonnull AuthPigeonFirebaseApp *)app details:nil]); } }]; +#endif } - (void)getEnrolledFactorsApp:(nonnull AuthPigeonFirebaseApp *)app @@ -969,10 +957,12 @@ - (void)resolveSignInResolverId:(nonnull NSString *)resolverId FIRMultiFactorAssertion *multiFactorAssertion; if (assertion != nil) { +#if TARGET_OS_IPHONE FIRPhoneAuthCredential *credential = [[FIRPhoneAuthProvider provider] credentialWithVerificationID:[assertion verificationId] verificationCode:[assertion verificationCode]]; multiFactorAssertion = [FIRPhoneMultiFactorGenerator assertionWithCredential:credential]; +#endif } else if (totpAssertionId != nil) { multiFactorAssertion = _multiFactorAssertionMap[totpAssertionId]; } else { @@ -1065,8 +1055,6 @@ - (void)openInOtpAppSecretKey:(nonnull NSString *)secretKey completion(nil); } -#endif - - (void)applyActionCodeApp:(nonnull AuthPigeonFirebaseApp *)app code:(nonnull NSString *)code completion:(nonnull void (^)(FlutterError *_Nullable))completion { diff --git a/packages/firebase_auth/firebase_auth/ios/firebase_auth/Sources/firebase_auth/PigeonParser.m b/packages/firebase_auth/firebase_auth/ios/firebase_auth/Sources/firebase_auth/PigeonParser.m index ec7fd2057a26..3386570909a4 100644 --- a/packages/firebase_auth/firebase_auth/ios/firebase_auth/Sources/firebase_auth/PigeonParser.m +++ b/packages/firebase_auth/firebase_auth/ios/firebase_auth/Sources/firebase_auth/PigeonParser.m @@ -82,7 +82,6 @@ + (PigeonAdditionalUserInfo *)getPigeonAdditionalUserInfo:(nonnull FIRAdditional profile:userInfo.profile]; } -#if TARGET_OS_IPHONE + (PigeonTotpSecret *)getPigeonTotpSecret:(FIRTOTPSecret *)secret { return [PigeonTotpSecret makeWithCodeIntervalSeconds:nil codeLength:nil @@ -90,7 +89,6 @@ + (PigeonTotpSecret *)getPigeonTotpSecret:(FIRTOTPSecret *)secret { hashingAlgorithm:nil secretKey:secret.sharedSecretKey]; } -#endif + (PigeonAuthCredential *)getPigeonAuthCredential:(FIRAuthCredential *)authCredential token:(NSNumber *_Nullable)token { diff --git a/packages/firebase_auth/firebase_auth/ios/firebase_auth/Sources/firebase_auth/include/Private/PigeonParser.h b/packages/firebase_auth/firebase_auth/ios/firebase_auth/Sources/firebase_auth/include/Private/PigeonParser.h index a05d3fc9faef..5ea7547445ff 100644 --- a/packages/firebase_auth/firebase_auth/ios/firebase_auth/Sources/firebase_auth/include/Private/PigeonParser.h +++ b/packages/firebase_auth/firebase_auth/ios/firebase_auth/Sources/firebase_auth/include/Private/PigeonParser.h @@ -25,9 +25,7 @@ (nullable PigeonActionCodeSettings *)settings; + (PigeonUserCredential *_Nullable)getPigeonUserCredentialFromFIRUser:(nonnull FIRUser *)user; + (PigeonIdTokenResult *_Nonnull)parseIdTokenResult:(nonnull FIRAuthTokenResult *)tokenResult; -#if TARGET_OS_IPHONE + (PigeonTotpSecret *_Nonnull)getPigeonTotpSecret:(nonnull FIRTOTPSecret *)secret; -#endif + (PigeonAuthCredential *_Nullable)getPigeonAuthCredential: (FIRAuthCredential *_Nullable)authCredentialToken token:(NSNumber *_Nullable)token; diff --git a/packages/firebase_auth/firebase_auth/lib/src/user.dart b/packages/firebase_auth/firebase_auth/lib/src/user.dart index 2bd9d2da7897..9b7ccdb71c95 100644 --- a/packages/firebase_auth/firebase_auth/lib/src/user.dart +++ b/packages/firebase_auth/firebase_auth/lib/src/user.dart @@ -659,11 +659,9 @@ class User { } MultiFactor get multiFactor { - if (!kIsWeb && - (defaultTargetPlatform == TargetPlatform.macOS || - defaultTargetPlatform == TargetPlatform.windows)) { + if (!kIsWeb && (defaultTargetPlatform == TargetPlatform.windows)) { throw UnimplementedError( - 'MultiFactor Authentication is only supported on web, Android and iOS.', + 'MultiFactor Authentication is only supported on web, Android, iOS and macOS.', ); } return _multiFactor ??= MultiFactor._(_delegate.multiFactor);