The following is the complete process for a new Facebook login.
Here's how I reworked my Facebook integration to make it work with the latest update.
Xcode 7.x , iOS 9 , Facebook SDK 4.x
Step 1. Download the latest version of the SDK for Facebook (it includes significant changes).
Step 2 Add FBSDKCoreKit.framework and FBSDKLoginKit.framework to your project.
Step 3 Now go to Project> Build Phases> add SafariServices.framework
Step 4. There are three changes to the info.plist file .
4.1 Make sure that you specify below in the info.plist file
<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string><your fb id here eg. fbxxxxxx></string> </array> </dict> </array> <key>FacebookAppID</key> <string><your FacebookAppID></string> <key>FacebookDisplayName</key> <string><Your_App_Name_Here></string>
4.2 Now add below for White-List Facebook Servers, this is necessary for iOS 9
<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>facebook.com</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSExceptionRequiresForwardSecrecy</key> <false/> </dict> <key>fbcdn.net</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSExceptionRequiresForwardSecrecy</key> <false/> </dict> <key>akamaihd.net</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSExceptionRequiresForwardSecrecy</key> <false/> </dict> </dict> </dict>
4.3 Adding URL Schemas
<key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fb-messenger-api</string> <string>fbauth2</string> <string>fbshareextension</string> </array>
Step 5. Now open the file AppDelegate.m
5.1 Add the import statements below (delete the old one).
#import <FBSDKLoginKit/FBSDKLoginKit.h> #import <FBSDKCoreKit/FBSDKCoreKit.h>
5.2 update after the following methods
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:sourceApplication annotation:annotation]; } - (void)applicationDidBecomeActive:(UIApplication *)application { [FBSDKAppEvents activateApp]; } - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { return [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions]; }
Step 6 Now we need to change our login controller, where we perform the login task
6.1 Add these imports to Login ViewController.m
#import <FBSDKCoreKit/FBSDKCoreKit.h> #import <FBSDKLoginKit/FBSDKLoginKit.h>
6.2 Add Facebook Login Button
FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init]; loginButton.center = self.view.center; [self.view addSubview:loginButton];
6.3 Login button, click
-(IBAction)facebookLogin:(id)sender { FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; if ([FBSDKAccessToken currentAccessToken]) { NSLog(@"Token is available : %@",[[FBSDKAccessToken currentAccessToken]tokenString]); [self fetchUserInfo]; } else { [login logInWithReadPermissions:@[@"email"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { if (error) { NSLog(@"Login process error"); } else if (result.isCancelled) { NSLog(@"User cancelled login"); } else { NSLog(@"Login Success"); if ([result.grantedPermissions containsObject:@"email"]) { NSLog(@"result is:%@",result); [self fetchUserInfo]; } else { [SVProgressHUD showErrorWithStatus:@"Facebook email permission error"]; } } }]; } }
6.4 Get user information (name, email address, etc.)
-(void)fetchUserInfo { if ([FBSDKAccessToken currentAccessToken]) { NSLog(@"Token is available : %@",[[FBSDKAccessToken currentAccessToken]tokenString]); [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"id, name, email"}] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { if (!error) { NSLog(@"results:%@",result); NSString *email = [result objectForKey:@"email"]; NSString *userId = [result objectForKey:@"id"]; if (email.length >0 ) {
Step 7 Now you can create a project, you should get below the screen.

Hope this helps you guys.
References Thanks to Facebook docs, Stackoverflow posts and Google posts.