1
我使用下面的代码的Facebook登录。它对于绝大多数用户来说工作得非常好,但由于某些原因,它对于少数几个人来说是崩溃的。斯威夫特的Facebook登录崩溃
因为没有人提出的任何崩溃报告和事实,我似乎无法重现该问题自己意味着我令人头我的头试图找出原因。
任何帮助,非常感谢!
@IBAction func btnFBLoginPressed(sender: AnyObject) {
let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
fbLoginManager .logInWithReadPermissions(["public_profile","email", "user_friends"], fromViewController: self, handler: { (result, error) -> Void in
if (error == nil){
let fbloginresult : FBSDKLoginManagerLoginResult = result
if result.isCancelled {
print("cancelled")
return
}
if(fbloginresult.grantedPermissions.contains("email"))
{
self.getFBUserData()
//fbLoginManager.logOut()
}
}
})
}
func getFBUserData(){
if((FBSDKAccessToken.currentAccessToken()) != nil){
FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email, gender, age_range, locale"]).startWithCompletionHandler({ (connection, result, error) -> Void in
if (error == nil){
let userName : NSString = result.valueForKey("name") as! NSString
let facebookID : NSString = result.valueForKey("id") as! NSString
let firstName : NSString = result.valueForKey("first_name") as! NSString
let lastName : NSString = result.valueForKey("last_name") as! NSString
let email : NSString = result.valueForKey("email") as! NSString
let gender : NSString = result.valueForKey("gender") as! NSString
let locale : NSString = result.valueForKey("locale") as! NSString
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject("\(userName)", forKey: "userName")
defaults.setObject("\(facebookID)", forKey: "facebookID")
defaults.setObject("\(firstName)", forKey: "firstName")
defaults.setObject("\(lastName)", forKey: "lastName")
defaults.setObject("\(email)", forKey: "email")
defaults.setObject("\(gender)", forKey: "gender")
defaults.setObject("\(locale)", forKey: "locale")
}
})
}
}