Using the Facebook SDK in an IOS Static Library
The new Facebook SDK is great. The Single Sign on is a much more fluid login process for the majority of Facebook users. But the old dialog, despite being ugly, let us put it anywhere, without any problems.
We have a static library that uses Facebook, that our partners can drop into their own app. The new SDK causes some problems. If they are already using Facebook, the methods in the App Delegate collide. Even if they aren't using it, you have to convince them to update their plists with your schemes.
Facebook seems to have forgotten to put some options into the new SDK, but if we take a tour through the source code, we see this method:
1 2 3 4 5 |
- (void)authorize:(NSArray *)permissions { self.permissions = permissions; |
Changing those two YES's to NO's makes the app revert to the old dialog. No plist entry needed, no entry points in the App Delegate, just good old web view callbacks.
The only problem for us is that distributing the Facebook SDK with our library would cause headaches for our partner's developers. They would have two clashing FB SDK's.
So we expose the method we want and create a category to write a new method using the private method authorizeWithFBAppAuth.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// expose Facebook API we need @interface Facebook (Private) - (void)authorizeWithFBAppAuth:(BOOL)tryFBAppAuth safariAuth:(BOOL)trySafariAuth; @end |
I just dropped that in the controller where I needed it, although you could always include it from its own source files.

