install fb pod
pod 'FacebookCore'
pod 'FacebookLogin'
@IBAction func btnLoginWithFb(_ sender: UIButton) {
var facebookUserData = [String: String]()
let loginManager = LoginManager()
loginManager.logOut()
loginManager.logIn(readPermissions:[.publicProfile,.email], viewController: self) {
loginResult in
switch loginResult {
case .failed(let error):
print(error)
self.showAlert("Error Message", msg: error as? String, dismissBtnTitle: "Ok")
case .cancelled:
print("User cancelled login.")
case .success(_,_,let accessToken):
print("Logged in!")
facebookUserData["fb_auth_token"] = String( describing: accessToken.authenticationToken )
self.getUserInfo(completion: { userInfo, error in
if let error = error {
SVProgressHUD.dismiss()
print(error.localizedDescription)
}
// Get User Detail from Facebook
if let userInfo = userInfo, let id = userInfo["id"] , let name = userInfo["name"], let email = userInfo["email"]{
print("ID: \(id),name: \(name),email: \(email)")
facebookUserData["fbId"] = id as? String
facebookUserData["name"] = name as? String
facebookUserData["email"] = email as? String
}
if let userInfo = userInfo, let pictureUrl = ((userInfo["picture"] as? [String: Any])?["data"] as? [String: Any])?["url"] as? String {
print(pictureUrl)
facebookUserData["pictureUrl"] = pictureUrl
self.DpImage.sd_setImage(with: URL(string: pictureUrl), placeholderImage: UIImage(named: "idol.png"))
}
let json : NSDictionary? = ["username":facebookUserData["name"] as Any,"email" :facebookUserData["email"] as Any,"uid":facebookUserData["fbId"] as Any,"device_token":"device_token","photo":facebookUserData["pictureUrl"] as Any,"fb_auth_token":facebookUserData["fb_auth_token"] as Any]
let jsonUser : NSDictionary? = ["user":json as Any ]
NetworkIO().post(Constants.FACEBOOK_LOGIN, json: jsonUser ){ (data, response, error) in
self.runOnUIThread({
SVProgressHUD.dismiss()
if let _ = error {
if error?.code == 404 {
self.showAlert("Error!!", msg: "Server not found, please try again.", dismissBtnTitle: "Ok")
}else {
self.handleError(error!)
}
} else {
if let httpResponse = response as? HTTPURLResponse {
if httpResponse.statusCode == 500 {
self.showAlert("Error!!", msg: "Internal Server Error", dismissBtnTitle: "Ok")
}else if httpResponse.statusCode == 200 {
if (data != nil) {
print("data \(String(describing: data))")
let status = data?["status"] as! Int64
switch status{
case 0:
// let message = data?["message"] as! String
let result : NSDictionary = data?["data"] as! NSDictionary
let email_verified = result["email_verified"] as! Int
if email_verified == 1 {
let id = result["id"] as! Int
prefrence.set(email_verified, forKey: "email_verified")
prefrence.set(id, forKey: "id")
let auth_token = result["auth_token"] as! String
let email = result["email"] as! String
var photo: String?
if result["photo"] != nil {
photo = result["photo"] as? String
prefrence.set(photo, forKey: "photo")
}
let username = result["username"] as! String
prefrence.set(email, forKey: "email")
prefrence.set(username, forKey: "username")
prefrence.set(auth_token, forKey: "auth_token")
prefrence.set(true, forKey: "login")
prefrence.set(result["sign_in_count"] as! Int, forKey: "sign_in_count")
prefrence.synchronize()
authToken = prefrence.string(forKey: "auth_token")!
// self.goToHomeScreen()
}
if data!["message"] != nil {
//let mess = data!["message"] as! String
print("result \(String(describing: result))")
//self.openOtpAlertView(message: mess,email: email)
}
break
case 1007:
break
default:
break
}
}
}
}
}
})
}
})
}
}
}
// Get UserDetail from Facebook GraphAPI
func getUserInfo(completion: @escaping (_ : [String: Any]?, _: Error?) -> Void){
SVProgressHUD.show()
let request = GraphRequest(graphPath: "me",parameters:["fields": "id,name,email,picture.type(large),birthday"])
request.start { response, result in
switch result {
case .failed(let error):
completion(nil ,error)
case .success(let graphResponse):
completion(graphResponse.dictionaryValue, nil)
}
}
}
No comments:
Post a Comment