Updated 19 February 2018
Hello guys, this post is about Facebook Login in Swift 3.
123 pod 'FacebookCore'pod 'FacebookLogin'pod 'FBSDKLoginKit'
1 pod install
Inside Appdelegate.swift
12 import FacebookLoginimport FBSDKLoginKit
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
1 import FBSDKLoginKit
Create IBAction method on Facebook UIButton and write below code inside that method
1234567891011121314 @IBAction func facebookBtnAction(_ sender: Any) {let loginView : FBSDKLoginManager = FBSDKLoginManager()loginView.loginBehavior = FBSDKLoginBehavior.webloginView.logIn(withReadPermissions:["public_profile","user_friends","email"], from: self) {loginResult,error inif(error != nil){print("error")}else{self.loginManagerDidComplete()}}}
Now write code for loginManagerDidComplete() method
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 inif (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 dictionaryself.SocialLoginAPICall(dict: dict2)}})}}
Important step (don’t forget):
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
If you have more details or questions, you can reply to the received confirmation email.
Back to Home
Be the first to comment.