I\'ve followed this guide to update my application to use Facebook SDK 4.6 to work properly when built with the iOS 9 SDK.
When I tap the login button now, a Safari
For anyone looking for Swift assistance on this very issue the following worked for me.
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(app, openURL: url, sourceApplication: UIApplicationOpenURLOptionsSourceApplicationKey, annotation: UIApplicationOpenURLOptionsAnnotationKey)
}
For Swift this was working for me (add it in AppDelegate.swift):
@available(iOS 9.0, *)
func application(application: UIApplication,openURL url: NSURL, options: [String: AnyObject]) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(application,
openURL: url,
sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String,
annotation: options [UIApplicationOpenURLOptionsAnnotationKey])
}
and
@available(iOS, introduced=8.0, deprecated=9.0)
func application(application: UIApplication,openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(application,
openURL: url,
sourceApplication: sourceApplication!,
annotation: annotation)
}
In each case remember to add import FBSDKCoreKit with the other import statements.
Its basically what Google SignIn uses. If its still not working you need to set the delegates and your info.plist like it is specified in the FaceBook Docs. I hope this helps!
for xamarin users :
public override bool OpenUrl(UIApplication application, NSUrl url, string sourceApplication, NSObject annotation)
{
OnUrlProtocolDetected(url.ToString());
if (url.AbsoluteString.StartsWith("fb"))
{
return ApplicationDelegate.SharedInstance.OpenUrl(application, url, sourceApplication, annotation);
}
}
For Swift 3 & Facebook SDK 4.16.0:
Add the following code to AppDelegate.swift
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
}