如何从iOS上的Facebook SDK获取用户数据

Ale*_*tev 5 facebook facebook-graph-api ios swift facebook-sdk-4.x

下午好!我需要从Facebook获取用户数据.我成功获取了用户名,ID,照片等数据.但是当你尝试查询婚姻状况时,我得到一个空字典的回复.我尝试提出不同的请求,但总是得到这样的结果.我也看过这些主题官方Facebook网站,这个,这个怎么样才能解决这个问题?

我的示例代码

   static func getUserRelationship() {
    if (FBSDKAccessToken.currentAccessToken() != nil) {
        guard let currentUser = getCurrentFacebookUser() else { return }
        FBSDKGraphRequest(graphPath: "/\(currentUser.id)/family", parameters: nil, HTTPMethod: "GET").startWithCompletionHandler({ (requestConnection, result, error) in
            if error == nil {
                let dictionary = result as! [String : AnyObject]
                let array = dictionary["data"]
                print("facebook", result, dictionary, array?.count)
            } else {
                print(error.localizedDescription)
            }
        })
    } else {
        getDataLogin({
            getUserBirthday()
            }, fails: { (error) in

        })
    }
}
Run Code Online (Sandbox Code Playgroud)

我在控制台中看到了结果

    facebook {
    data =     (
    );
}
Run Code Online (Sandbox Code Playgroud)

Cha*_*lva 13

您的GraphRequest不正确.如果你想获取用户数据,graphPathe应该是"我",你应该请求参数以获得关系状态和其他信息.而且你需要在LogInWithReadPermissons中请求公开的个人资料,所以在阅读许可: -

    let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
    fbLoginManager.loginBehavior = FBSDKLoginBehavior.Web
    fbLoginManager.logInWithReadPermissions(["public_profile","email"], fromViewController: self) { (result, error) -> Void in
        if error != nil {
            print(error.localizedDescription)
            self.dismissViewControllerAnimated(true, completion: nil)
        } else if result.isCancelled {
            print("Cancelled")
            self.dismissViewControllerAnimated(true, completion: nil)
        } else {

        }
    }
Run Code Online (Sandbox Code Playgroud)

并在检索信息时: -

   FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, relationship_status"]).startWithCompletionHandler({ (connection, result, error) -> Void in
            if (error == nil){
                let fbDetails = result as! NSDictionary
                print(fbDetails)
            }
        })
Run Code Online (Sandbox Code Playgroud)

顺便说一句,如果你想要婚姻状况你应该使用graphPath作为"我"而不是"/ {user-id}/family".你可以用它来获得这个人的家庭关系.