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