diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/Services/AuthService.swift b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/Services/AuthService.swift index 8b19eea7d0..faf83645ec 100644 --- a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/Services/AuthService.swift +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/Services/AuthService.swift @@ -29,7 +29,8 @@ public protocol AuthProviderUI { public protocol PhoneAuthProviderSwift: AuthProviderSwift { @MainActor func verifyPhoneNumber(phoneNumber: String) async throws -> String - @MainActor func createAuthCredential(verificationId: String, verificationCode: String) async throws -> AuthCredential + @MainActor func createAuthCredential(verificationId: String, + verificationCode: String) async throws -> AuthCredential } public enum AuthenticationState { @@ -109,7 +110,10 @@ public final class AuthService { public init(configuration: AuthConfiguration = AuthConfiguration(), auth: Auth = Auth.auth()) { self.auth = auth self.configuration = configuration - string = StringUtils(bundle: configuration.customStringsBundle ?? Bundle.module, languageCode: configuration.languageCode) + string = StringUtils( + bundle: configuration.customStringsBundle ?? Bundle.module, + languageCode: configuration.languageCode + ) listenerManager = AuthListenerManager(auth: auth, authEnvironment: self) FirebaseApp.registerLibrary("firebase-ui-ios", withVersion: FirebaseAuthSwiftUIVersion.version) } @@ -427,7 +431,19 @@ public extension AuthService { throw AuthServiceError .invalidEmailLink("email address is missing from app storage. Is this the same device?") } - let link = url.absoluteString + let urlString = url.absoluteString + + guard let originalLink = CommonUtils.getQueryParamValue(from: urlString, paramName: "link") + else { + throw AuthServiceError + .invalidEmailLink("'link' parameter is missing from the email link URL") + } + + guard let link = originalLink.removingPercentEncoding else { + throw AuthServiceError + .invalidEmailLink("Failed to decode Link URL") + } + guard let continueUrl = CommonUtils.getQueryParamValue(from: link, paramName: "continueUrl") else { throw AuthServiceError diff --git a/samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample.xcodeproj/project.pbxproj b/samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample.xcodeproj/project.pbxproj index 4e93b41944..abec964899 100644 --- a/samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample.xcodeproj/project.pbxproj +++ b/samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample.xcodeproj/project.pbxproj @@ -495,7 +495,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_ASSET_PATHS = "\"FirebaseSwiftUIExample/Preview Content\""; - DEVELOPMENT_TEAM = 3G33A99C47; + DEVELOPMENT_TEAM = YYX2P3XVJ7; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = FirebaseSwiftUIExample/Info.plist; diff --git a/samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample/App/ContentView.swift b/samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample/App/ContentView.swift index 0f6f583793..add1a85d3b 100644 --- a/samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample/App/ContentView.swift +++ b/samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample/App/ContentView.swift @@ -35,10 +35,9 @@ struct ContentView: View { Auth.auth().signInAnonymously() let actionCodeSettings = ActionCodeSettings() actionCodeSettings.handleCodeInApp = true - actionCodeSettings - .url = URL(string: "https://flutterfire-e2e-tests.firebaseapp.com") - actionCodeSettings.linkDomain = "flutterfire-e2e-tests.firebaseapp.com" + actionCodeSettings.url = URL(string: "https://flutterfire-e2e-tests.firebaseapp.com") actionCodeSettings.setIOSBundleID(Bundle.main.bundleIdentifier!) + actionCodeSettings.linkDomain = "flutterfire-e2e-tests.firebaseapp.com" let configuration = AuthConfiguration( shouldAutoUpgradeAnonymousUsers: true, tosUrl: URL(string: "https://example.com/tos"), @@ -110,9 +109,6 @@ struct ContentView: View { } .navigationTitle("Firebase UI Demo") } - .onAppear { - authService.isPresented = authService.authenticationState == .unauthenticated - } .onChange(of: authService.authenticationState) { _, newValue in debugPrint("authService.authenticationState - \(newValue)") if newValue != .authenticating { diff --git a/samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample/FirebaseSwiftUIExample.entitlements b/samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample/FirebaseSwiftUIExample.entitlements index f817dae27e..58e1cda1f4 100644 --- a/samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample/FirebaseSwiftUIExample.entitlements +++ b/samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample/FirebaseSwiftUIExample.entitlements @@ -11,6 +11,7 @@ com.apple.developer.associated-domains applinks:flutterfire-e2e-tests.firebaseapp.com + applinks:flutterfiretests.page.link