facebook-loginfacebook-ios-sdkfacebook-graph-api-v2.2

Why does the iOS Facebook app show the old login flow, while Safari shows the new one?


We are updating an app to use the new Facebook iOS SDK (4.0.1) , to support the login changes that are forced from 1st May 2015.

We invoke the login screen with login behaviour set to FBSDKLoginBehaviorNative, using this:

[self.loginManager logInWithReadPermissions:@[@"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
        if (error) {
            completion(nil, error);
        }
        else if (result.isCancelled) {
            completion(nil, nil);
        }
        else {
            completion(result.token.tokenString, nil);
        }
    }];

We get a strange result though. With the Facebook iOS app installed on the device and logged in as one of our Facebook App test users we see the old login screen (no ability to refuse specific permissions, and asking for the friend_list deprecated permission):

enter image description here

Without the Facebook iOS app installed, we get the expected new login screen:

enter image description here

What gives?

Device details: iPhone 4S, iOS 8.1, FB app v28.0 (13 Apr 2015).


Solution

  • We have verified that this is an unintended regression introduced in version 4.0 of the Facebook SDK for iOS, and we have a fix that will ship in the next update to the SDK. Once it is fixed, users will see the same version of the Login dialog regardless of whether they are viewing it in Safari or within the Facebook app.

    Note that, once an application has been migrated to use version 2.0 of Graph API (post-April 30), users should see the new version of the Login dialog in both cases, with or without the fix to the SDK, so this discrepancy should only be an issue for a short time. (If you continue to see unusual behavior in this case, please report it.)

    Sorry for the confusion!