Swift和解析(以及xCode)问题

Swift和解析(以及xCode)问题,xcode,facebook,swift,login,parse-platform,Xcode,Facebook,Swift,Login,Parse Platform,Parse和Swift出现了一些问题。 我正在尝试将Facebook登录与解析类PFFacebookUtils一起使用。 这就是代码: // LOG IN or SIGN UP with FACEBOOK @IBAction func FacebookLogin() { PFFacebookUtils.logInWithPermissions(permissions, {(user: PFUser!, error: NSError!) -> Void in if

Parse和Swift出现了一些问题。 我正在尝试将Facebook登录与解析类PFFacebookUtils一起使用。 这就是代码:

// LOG IN or SIGN UP with FACEBOOK


@IBAction func FacebookLogin() {
    PFFacebookUtils.logInWithPermissions(permissions, {(user: PFUser!, error: NSError!) -> Void in
        if error == nil {
            if user == nil {
                NSLog("Uh oh. The user cancelled the Facebook login.")
                let userCancelledAlert = UIAlertController(title: "Error", message: "You cancelled the Facebook Login", preferredStyle: .Alert)
                let okButton = UIAlertAction(title: "OK", style: .Default, handler: nil)
                userCancelledAlert.addAction(okButton)
                let cancelButton = UIAlertAction(title: "Cancel", style: .Default, handler: nil)
                userCancelledAlert.addAction(cancelButton)
                self.presentViewController(userCancelledAlert, animated: true, completion: nil)            
            } else if user.isNew {
                NSLog("User signed up and logged in through Facebook!")
                FBRequestConnection.startWithGraphPath("me?fields=email", completionHandler: { (connection, result, error) -> Void in
                    if error == nil {
                        let fbGraphicObject = result as FBGraphObject
                        println(fbGraphicObject)
                    }
                })
            } else {
                NSLog("User logged in through Facebook!")            
                dispatch_async(dispatch_get_main_queue(), { () -> Void in
                    var homeViewController = self.storyboard?.instantiateViewControllerWithIdentifier("homePage") as HomeViewController
                    self.presentViewController(homeViewController, animated: true, completion: nil)
                })
            // end login (success)
            }
        } else {  // if login doesnt work
            println(error!)
            /*
            let facebookError = UIAlertController(title: "Error", message: "Cant connect to Facebook, check your connectivity", preferredStyle: .Alert)
            let okButton = UIAlertAction(title: "OK", style: .Default, handler: nil)
            facebookError.addAction(okButton)
            let cancelButton = UIAlertAction(title: "Cancel", style: .Default, handler: nil)
            facebookError.addAction(cancelButton)
            self.presentViewController(facebookError, animated: true, completion: nil)
            */
        }
    })
}
所以现在我的问题是:为什么我在注册时看不到什么是权限? 我的意思是,权限是一个数组

let permissions = ["email","user_birthday"]
但是,当我注册时,消息是这样的:“[APP-NAME]想要访问你的基本信息和朋友列表。 为什么不是电子邮件或用户的生日。 那么,我如何在我的解析数据库中存储这些信息呢?我的意思是,我看到了id、用户名、密码(显然,我没有)、authData等等。 我有email字段,但它是空的。 我猜密码有问题,有人能找到吗?
最后,我不知道为什么,但是解析类的xCode自动完成(我使用的是Swift)不起作用,几天前就成功了。

我也在做同样的事情,试图让Parse将Facebook电子邮件存储为用户名,而不是自动生成的id。自从Facebook将Graph API更新为v2.0以来,似乎没有多少东西可以告诉你如何做。这就是我所做的:

首先,我设置了从Facebook检索电子邮件的适当权限。这是通过“didLoginUser”方法完成的

其次,我发现了这个stackoverflow,它可以帮助您进行FB Graph API调用,然后使用所需的值更新Parse PFUser对象:

我按如下方式设置呼叫:

        if (FBSDKAccessToken.currentAccessToken() != nil){
            var userProfileRequestParams = [ "fields" : "id, name, email"]
            let userProfileRequest = FBSDKGraphRequest(graphPath: "me", parameters: userProfileRequestParams)
            let graphConnection = FBSDKGraphRequestConnection()
            graphConnection.addRequest(userProfileRequest, completionHandler: { (connection: FBSDKGraphRequestConnection!, result: AnyObject!, error: NSError!) -> Void in
                if(error != nil){
                    println(error)
                }
                else {
                    let fbEmail = result.objectForKey("email") as! String
                    let fbUserId = result.objectForKey("id") as! String
                    if(fbEmail != "") {
                        PFUser.currentUser()?.username = fbEmail
                        PFUser.currentUser()?.saveEventually(nil)
                    }
                    println("Email: \(fbEmail)")
                    println("FBUserId: \(fbUserId)")
                }
            })
            graphConnection.start()
        }
我把这个密码放进去了 func logInViewController(logInController:PFLogInViewController,didLogInUser用户:PFUser){

如果你对这一部分有疑问,看看这段视频,它有一个类似的想法,但在Twitter上


希望这对某人有所帮助。我在这上面花了将近5个小时。

在进入带有权限的登录之前,你能
println(权限)
看看里面有什么吗?至于XCode,它可能与@BabyAzerty有关,权限包含“[电子邮件,用户\u生日]是的,我以前读过这篇文章,但这不是我的问题。我没有任何消息或黑色窗口。简单地说,xCode编辑器没有向我建议任何有关解析框架(类、方法或属性)的内容
        if (FBSDKAccessToken.currentAccessToken() != nil){
            var userProfileRequestParams = [ "fields" : "id, name, email"]
            let userProfileRequest = FBSDKGraphRequest(graphPath: "me", parameters: userProfileRequestParams)
            let graphConnection = FBSDKGraphRequestConnection()
            graphConnection.addRequest(userProfileRequest, completionHandler: { (connection: FBSDKGraphRequestConnection!, result: AnyObject!, error: NSError!) -> Void in
                if(error != nil){
                    println(error)
                }
                else {
                    let fbEmail = result.objectForKey("email") as! String
                    let fbUserId = result.objectForKey("id") as! String
                    if(fbEmail != "") {
                        PFUser.currentUser()?.username = fbEmail
                        PFUser.currentUser()?.saveEventually(nil)
                    }
                    println("Email: \(fbEmail)")
                    println("FBUserId: \(fbUserId)")
                }
            })
            graphConnection.start()
        }