Android App Development
iOS App Development
Flutter App Development
Cross Platform App Development
Hire on-demand project developers and turn your idea into working reality.
Big thanks to Webkul and his team for helping get Opencart 3.0.3.7 release ready!
Deniel Kerr
Founder. Opencart
Top Partners
Updated 19 February 2018
Hello guys, this post is about Facebook Login in Swift 3.
pod 'FacebookCore' pod 'FacebookLogin' pod 'FBSDKLoginKit' 123 pod 'FacebookCore' pod 'FacebookLogin' pod 'FBSDKLoginKit'
pod install 1 pod install
Inside Appdelegate.swift
Swift import FacebookLogin import FBSDKLoginKit 12 import FacebookLoginimport FBSDKLoginKit
Swift func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { let value:Bool = FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions) return value } func applicationWillResignActive(_ application: UIApplication) { FBSDKAppEvents.activateApp() } func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { let valueFacebook: Bool = FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: sourceApplication, annotation: annotation) return valueFacebook } @available(iOS 9.0, *) func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool { let valueFacebook: Bool = FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: "UIApplicationOpenURLOptionsKey", annotation: nil) return valueFacebook } 1234567891011121314151617181920212223 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { let value:Bool = FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions) return value } func applicationWillResignActive(_ application: UIApplication) { FBSDKAppEvents.activateApp() } func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { let valueFacebook: Bool = FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: sourceApplication, annotation: annotation) return valueFacebook } @available(iOS 9.0, *)func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool { let valueFacebook: Bool = FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: "UIApplicationOpenURLOptionsKey", annotation: nil) return valueFacebook }
Inside ViewController in which you are going to create Facebook button to login
import FBSDKLoginKit 1 import FBSDKLoginKit
Create IBAction method on Facebook UIButton and write below code inside that method
@IBAction func facebookBtnAction(_ sender: Any) { let loginView : FBSDKLoginManager = FBSDKLoginManager() loginView.loginBehavior = FBSDKLoginBehavior.web loginView.logIn(withReadPermissions:["public_profile","user_friends","email"], from: self) { loginResult,error in if(error != nil){ print("error") } else{ self.loginManagerDidComplete() } } } 1234567891011121314 @IBAction func facebookBtnAction(_ sender: Any) { let loginView : FBSDKLoginManager = FBSDKLoginManager() loginView.loginBehavior = FBSDKLoginBehavior.web loginView.logIn(withReadPermissions:["public_profile","user_friends","email"], from: self) { loginResult,error in if(error != nil){ print("error") } else{ self.loginManagerDidComplete() } } }
Now write code for loginManagerDidComplete() method
func loginManagerDidComplete() { if((FBSDKAccessToken.current()) != nil){ FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email"]).start(completionHandler: { (connection, result, error) -> Void in if (error == nil){ let dict = result as! [String : AnyObject] // print(dict) var dict2 = [String : Any]() let sessionId = sharedPrefrence.object(forKey:"wk_token"); dict2["wk_token"] = sessionId; dict2["firstname"] = dict["first_name"] dict2["lastname"] = dict["last_name"] dict2["email"] = dict["email"] dict2["personId"] = dict["id"] print("Facebook Details: ", dict2) // Now you can call api by passing this dictionary self.SocialLoginAPICall(dict: dict2) } }) } } 1234567891011121314151617181920212223242526 func loginManagerDidComplete() { if((FBSDKAccessToken.current()) != nil){ FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email"]).start(completionHandler: { (connection, result, error) -> Void in if (error == nil){ let dict = result as! [String : AnyObject] // print(dict) var dict2 = [String : Any]() let sessionId = sharedPrefrence.object(forKey:"wk_token"); dict2["wk_token"] = sessionId; dict2["firstname"] = dict["first_name"] dict2["lastname"] = dict["last_name"] dict2["email"] = dict["email"] dict2["personId"] = dict["id"] print("Facebook Details: ", dict2) // Now you can call api by passing this dictionary self.SocialLoginAPICall(dict: dict2) } }) } }
Important step (don’t forget):
<!-- Facebook Begin --> <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>fb123</string> </array> </dict> </array> <key>FacebookAppID</key> <string>123</string> <key>FacebookDisplayName</key> <string>SocialLogin</string> <key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fb-messenger-share-api</string> <string>fbauth2</string> <string>fbshareextension</string> </array> <!-- Facebook End --> 1234567891011121314151617181920212223242526272829 <!-- Facebook Begin --> <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>fb123</string> </array> </dict> </array> <key>FacebookAppID</key> <string>123</string> <key>FacebookDisplayName</key> <string>SocialLogin</string> <key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fb-messenger-share-api</string> <string>fbauth2</string> <string>fbshareextension</string> </array> <!-- Facebook End -->
refer image to avoid any error
Your email address will not be published. Required fields are marked*
Name*
Email*
Save my name email and website in this browser for the next time I comment.
Be the first to comment.
We use cookies to personalize your experience. By continuing to visit this website you agree to our use of cookies. Learn more about privacy policy
Name
Email
Subject
Enquiry or Requirement
If you have more details or questions, you can reply to the received confirmation email.