ios - 使用 Swift 和 Parse 获取 Facebook UserData 时出现 fatal error

标签 ios iphone facebook swift facebook-graph-api

我正在尝试从 Facebook 登录添加到 Parse 用户。

登录有效,但是当我想从 Facebook 用户获取数据时,我的应用程序崩溃并显示:“ fatal error :在展开可选值 (lldb) 时意外发现 nil” 它来自“firstName”的值为 nil(见下面的代码) 知道为什么吗?会很棒:)

 var fbRequest = FBSDKGraphRequest(graphPath: "me", parameters: nil)
            fbRequest.startWithCompletionHandler({ (FBSDKGraphRequestConnection, result, error) -> Void in

                if (error == nil && result != nil) {
                    let facebookData = result as! NSDictionary //FACEBOOK DATA IN DICTIONARY
                    let facebookID = (facebookData.objectForKey("id") as? String)
                    let userEmail = (facebookData.objectForKey("email") as? String)
                    let firstName = (facebookData.objectForKey("first_name") as? String)
                    let lastName = (facebookData.objectForKey("last_name") as? String)

                     var user = PFUser()

                     // println(firstName!) -> says that firstName is nil: " fatal error: unexpectedly found nil while unwrapping an Optional value (lldb)"


                    user.setValue(firstName, forKey: "firstName")
                    user.setValue(lastName, forKey: "username")
                    user.setValue(facebookID, forKey: "objectID")
                    user.setValue(userEmail, forKey: "email")




                    user.signUpInBackgroundWithBlock {  .... }

我完全不知道如何解决这个问题,所以任何帮助都会很棒! :)

PS:这段代码在

    func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) { ... }

最佳答案

尽量给参数加上关键的字段

 if((FBSDKAccessToken.currentAccessToken()) != nil){
        FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, email, first_name, last_name"]).startWithCompletionHandler({ (connection, result, error) -> Void in
            if (error == nil){


                let email = result.valueForKey("email") as? String       
                let fbid = result.valueForKey("id") as! String
                let fname = result.valueForKey("first_name") as! String
                let lname = result.valueForKey("last_name") as! String

            }
        })
    }

关于ios - 使用 Swift 和 Parse 获取 Facebook UserData 时出现 fatal error ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31486786/

相关文章:

ios - 设置两个变量后如何调用方法

ios - 输入一个 Autocomplete TextField 会弹出另一个 Autocomplete TextField TableView

iphone - 捕获视频时在开始时检测相机旋转

iphone - 我需要做什么才能在 iPod Touch(不是 iPhone)上测试我的 iPhone/iPod 应用程序?

javascript - Parse.com Facebook API logIn() 方法。永远不会调用回调

ios - UIPageViewController 中的动画

javascript - 在 iOS 中通过 webApp 导航时保持全屏模式

ios - 收到推送消息后,如何更新 iOS 主屏幕中的通知角标(Badge)编号?

php - 如何正确使用 facebook scope 获取用户邮箱?

ios - 用于在 iOS 上启动 Facebook Messenger 的自定义 URL