我一直在尝试使用Swift创建Facebook登录/注册功能,但一直很困难。我一直在寻找教程,但没有找到任何有用的信息。因此,我试图自己完成它。看起来它可以工作,但是为什么它不能将我的Facebook名称、性别和图像保存在数据库中呢?它可以在模拟器中保存,但在我使用iOS 8设备时却不能保存?
我收到了这条日志消息:“用户通过Facebook注册并登录!”,并且一个新用户被添加到解析类中,但是名称、图像和性别却没有保存...
我收到了这条日志消息:“用户通过Facebook注册并登录!”,并且一个新用户被添加到解析类中,但是名称、图像和性别却没有保存...
@IBAction func login(sender: UIButton!) {
var permissionArray = ["user_about_me", "user_relationships", "user_birthday", "user_location"]
PFFacebookUtils.initializeFacebook()
PFFacebookUtils.logInWithPermissions(permissionArray, block: { (user: PFUser!, error: NSError!) in
println(user)
if user == nil {
println(error.localizedDescription)
} else {
if user.isNew {
var userQuery = PFUser.query()
userQuery.getObjectInBackgroundWithId(PFUser.currentUser().objectId) {
(userObject: PFObject!, error: NSError!) -> Void in
var fbRequest = FBRequest.requestForMe()
fbRequest.startWithCompletionHandler { (connection: FBRequestConnection!, result:AnyObject!, error: NSError!) in
if error == nil {
//FACEBOOK DATA IN DICTIONARY
var userData = result as NSDictionary
var faceBookId = userData.objectForKey("id") as NSString
var faceBookName = userData.objectForKey("first_name") as NSString
var faceBookMiddle = userData.objectForKey("middle_name") as NSString
var faceBookGender = userData.objectForKey("gender") as NSString
var url:NSURL = NSURL.URLWithString(NSString(format:"https://graph.facebook.com/%@/picture?width=320", faceBookId))
var err: NSError?
var imageData :NSData = NSData.dataWithContentsOfURL(url, options: NSDataReadingOptions.DataReadingMappedIfSafe, error: &err)
var imageFile = PFFile(name: "image.jpg", data: imageData) as PFFile
println(userData)
userObject.setObject(faceBookName, forKey: "name")
userObject.setObject(imageFile, forKey: "file")
userObject.setObject(faceBookGender, forKey: "gender")
userObject.saveInBackground()
var sharedInstance:userSingleton = userSingleton.sharedInstance
sharedInstance.userName = (userObject.objectForKey("name") as NSString)
sharedInstance.userGender = (userObject.objectForKey("gender") as NSString)
(userObject.objectForKey("file") as PFFile).getDataInBackgroundWithBlock {
(theImageData: NSData!, error: NSError!) -> Void in
println(error)
if error == nil {
sharedInstance.userImage = UIImage(data:theImageData)
}
self.performSegueWithIdentifier("LoginSegue", sender: self)
}
}
}
}
println("User signed up and logged in through Facebook!")
} else {
println("User logged in through Facebook!")
}
}
})
}
}