Skip to content

Instantly share code, notes, and snippets.

@naveedmcs
Last active March 27, 2020 09:31
Show Gist options
  • Select an option

  • Save naveedmcs/def18d0d9ab272c3606ed792058c39bc to your computer and use it in GitHub Desktop.

Select an option

Save naveedmcs/def18d0d9ab272c3606ed792058c39bc to your computer and use it in GitHub Desktop.
facebookLogin_IOS
//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