Last active
March 27, 2020 09:31
-
-
Save naveedmcs/def18d0d9ab272c3606ed792058c39bc to your computer and use it in GitHub Desktop.
facebookLogin_IOS
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| //Make sure that u are using latest facebook sdk 2020 | |
| //pod 'FBSDKCoreKit' | |
| //pod 'FBSDKLoginKit' | |
| extension LoginVC { | |
| @IBAction func facebook(_ sender: Any) { | |
| self.loginWithReadPermissions() | |
| } | |
| func loginWithReadPermissions() { | |
| let loginManager = LoginManager() | |
| loginManager.logIn( | |
| permissions: [.publicProfile, .userFriends, .email], | |
| viewController: self | |
| ) { result in | |
| self.loginManagerDidComplete(result) | |
| } | |
| } | |
| func loginManagerDidComplete(_ result: LoginResult) { | |
| switch result { | |
| case .cancelled: | |
| //optional alert | |
| let title = "Login Cancelled" | |
| let message = "User cancelled login." | |
| AlertController.present(title: title, message) | |
| case .failed(let error): | |
| //optional alert | |
| let title = "Login Fail" | |
| let message = "Login failed with error \(error)" | |
| AlertController.present(title: title, message) | |
| case .success(_ , _, let token): | |
| //call function to fetch facebook profile | |
| self.fetchFacebookUserProfile(accessToken: token) | |
| } | |
| } | |
| private func fetchFacebookUserProfile(accessToken: AccessToken ) { | |
| guard let currentAccessToken = AccessToken.current else { | |
| return AlertController.present("Access token not found") | |
| } | |
| let facebookAPIManager = FacebookAPIManager(accessToken:currentAccessToken) | |
| facebookAPIManager.requestFacebookUser(completion: { (facebookUser) in | |
| let params: [String: Any] = [ | |
| "first_name":facebookUser.firstName ?? "", | |
| "last_name":facebookUser.lastName ?? "", | |
| "email":facebookUser.email ?? "", | |
| "profile_image":facebookUser.profilePicture ?? "", | |
| "lat":"0.0", | |
| "long":"0.0", | |
| "fcm_token":"1111", | |
| "time_zone":TimeZone.current.identifier, | |
| "login_type":"Facebook", | |
| "social_token":facebookUser.id!, | |
| "interested_service": 2 | |
| ] | |
| // call web api to login | |
| self.requestToLogin(params: params) | |
| }) | |
| } | |
| //call this method in logout button action -> LoginVC.logOutFacebook() | |
| static func logOutFacebook() { | |
| let loginManager = LoginManager() | |
| loginManager.logOut() | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment