FBSDK Login Error Code: 308 in Objective-C

I keep getting

"Error Domain=com.facebook.sdk.login Code=308 "The operation couldn’t be completed. (com.facebook.sdk.login error 308.)""

upon trying to login with Facebook from my device.

My code works on the simulator, but not on an actual device. Has anyone ran into this error code before? I'll be more than happy to share code upon request.


Solution 1:

The solution below works for iOS9 + running on Xcode 8, for Swift3.0

The steps are

  1. Setup Facebook Launch

FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)

  1. Setup Open Url

    guard let source = options[UIApplicationOpenURLOptionsSourceApplicationKey] as? String else { return false } let annotation = options[UIApplicationOpenURLOptionsAnnotationKey] as? String return FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: source, annotation: annotation)

  2. Fix Keychain permission issue as shown in the image below

iOS 9 Keychain fix

Solution 2:

One solution, at least for me, is to not run on device via the Xcode debugger. If I run the app on device outside the debugger the Facebook login works fine. If I run the app in the sim via the debugger the Facebook login works fine.

Only if I run the app on device via the Xcode debugger do I get the com.facebook.sdk.login error 308 every time.

Solution 3:

You should enable Keychain Sharing on the Capabilities tab.