Skip to content

Commit 46b5f32

Browse files
committed
Enhance Facebook sign-in process by trimming nonce and validating login configuration
1 parent ed758dd commit 46b5f32

1 file changed

Lines changed: 32 additions & 7 deletions

File tree

  • src/Kapusch.FacebookApisForiOSComponents/Native/iOS/KapuschFacebookAuthInterop/Sources/KapuschFacebookAuthInterop

src/Kapusch.FacebookApisForiOSComponents/Native/iOS/KapuschFacebookAuthInterop/Sources/KapuschFacebookAuthInterop/Interop.swift

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,10 @@ public func kfb_facebook_signin_start(
155155
let tracking = trackingMode == FacebookTrackingMode.enabled.rawValue
156156
? LoginTracking.enabled
157157
: LoginTracking.limited
158-
let nonce = noncePtr.flatMap { String(cString: $0) }
158+
let nonce = noncePtr.flatMap { raw -> String? in
159+
let trimmed = String(cString: raw).trimmingCharacters(in: .whitespacesAndNewlines)
160+
return trimmed.isEmpty ? nil : trimmed
161+
}
159162
if tracking == .limited && nonce == nil {
160163
callFacebookCallback(
161164
callback,
@@ -170,13 +173,35 @@ public func kfb_facebook_signin_start(
170173
return
171174
}
172175

173-
let loginNonce = nonce ?? ""
176+
let loginConfig: LoginConfiguration? = {
177+
if let nonce {
178+
return LoginConfiguration(
179+
permissions: ["public_profile", "email"],
180+
tracking: tracking,
181+
nonce: nonce
182+
)
183+
}
174184

175-
let loginConfig = LoginConfiguration(
176-
permissions: ["public_profile", "email"],
177-
tracking: tracking,
178-
nonce: loginNonce
179-
)
185+
return LoginConfiguration(
186+
permissions: ["public_profile", "email"],
187+
tracking: tracking,
188+
messengerPageId: nil
189+
)
190+
}()
191+
192+
guard let loginConfig else {
193+
callFacebookCallback(
194+
callback,
195+
status: .failed,
196+
errorCode: "invalid_login_configuration",
197+
errorMessage: "Cannot create a valid Facebook LoginConfiguration.",
198+
context: context
199+
)
200+
FacebookState.inProgress = false
201+
FacebookState.callback = nil
202+
FacebookState.context = nil
203+
return
204+
}
180205

181206
LoginManager().logIn(
182207
viewController: presenting,

0 commit comments

Comments
 (0)