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
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
import FacebookLogin import FBSDKLoginKit 12 import FacebookLoginimport FBSDKLoginKit
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
We've bought a Shopware Extension which is a hybrid App, which we can now offer in the Google Play Store and the IOS App Store. I'am still impressed how fast and how sharp the support team leads us through every process of the App-Store clarification. Very fast and useful response.
Markus Walter
Founder, Das Apartment Living
USA
India
Global
Name
Email
Enquiry or Requirement
If you have more details or questions, you can reply to the received confirmation email.