n0_quarter n0_quarter - 4 months ago 45x
iOS Question

Google Sign-in conflicts with Facebook login

I'm using Google Sign-in and Facebook Login to provide Google and Facebook login in my app.

The problem is, when I'm using them both - Facebook Login Screen (based on Safari View Controller) doesn't dismiss after user logged in.

After hours of painful debugging I found out that the problem only appears if I initialise Google Sign-in before showing Facebook login prompt.

Basically, it's one line.


If I comment that line - Facebook login works fine.

EDIT: This is what I have in my AppDelegate.swift:

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 the sad thing is that this method isn't invoked at all.
But if I disable Google Login - it works fine.

Additional details:
I'm using Facebook SDK v4.12.0 and Google Sign-In SDK v4.0.0

Xcode Version 7.3.1 (7D1014), tested on iOS 9.3

Any ideas are welcome.


Ok folks, eventually I've figured it out. The trick which worked for me is to initialise Google Sign-In SDK before the Facebook SDK.

now my AppDelegate looks like this:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    // Initialize google sign-in
    var configureError: NSError?
    assert(configureError == nil, "Error configuring Google services: \(configureError)")

    // init FB SDK
    FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)

  return true