Native Shopify Mobile App with 20 new features
Kickstart your hyperlocal marketplace in Corona pandemic with a starter guide
Android App Development
iOS 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
Owner and 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
The support is fast and do everything in their power to make it perfect. If you need customization it's also done right away. I had massive research to select Mobikul and now I'm sure it was the right one.
Igor Souza
USA
India
Global
Name
Email
Enquiry or Requirement
If you have more details or questions, you can reply to the received confirmation email.