Swift无法获得Facebook用户名

时间:2015-08-05 08:58:33

标签: ios facebook swift facebook-sdk-4.0

我在swift中使用最新的Facebook SDK。我的问题是当我尝试将我的Facebook名称传递给变量时。有我的代码:

func returnUserData()
{
    let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: nil)
    graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in

        if ((error) != nil)
        {
            // Process error
            println("Error: \(error)")
        }
        else
        {
            // This variable is declared under my class declaration
            self.userFacebook = result.valueForKey("name") as! String
            println(self.userFacebook) //it's works, my Facebook name appear
        }
    })
}

但是,当我尝试使用我的变量“userFacebook”这个函数的outsite(returnUserData)时,结果是“nil”。 我不明白为什么我的变量只在函数中设置而不在我的类中。

由于

1 个答案:

答案 0 :(得分:1)

您传递参数请求获取的数据,例如获取名称。

像这样的请求参数

["fields": "id, name, first_name, last_name, picture.type(large), email"]

试试这段代码:

@IBAction func btnFBLoginPressed(sender: AnyObject) {
    var fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
    fbLoginManager .logInWithReadPermissions(["email"], handler: { (result, error) -> Void in
        if (error == nil){
            var fbloginresult : FBSDKLoginManagerLoginResult = result
            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"]).startWithCompletionHandler({ (connection, result, error) -> Void in
            if (error == nil){
                println(result)
                println(result["name"])
            }
        })
    }
}