Swift 3 Facebook SDK获取好友列表

7

我需要获取我的所有好友列表:

我找到了这段代码:

var fbRequestFriends: FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "/{friend-list-id}", parameters: [AnyHashable : Any]())

fbRequestFriends.start { (connection, result, error) in
    if error == nil && result != nil {
        print("Request Friends result : \(result!)")
    } else {
        print("Error \(error)")
    }
}

但是,我得到的回报却是这个错误:

错误:可选错误(域=NSURLErrorDomain Code=-1002“不支持的URL”UserInfo = {NSErrorFailingURLStringKey =(null)?access_token = EAAZAaT5Yj9qQBABsXA5KGpwvGX6wIdgX6h9mLtzz6YtgjiOB12XwWxl1MrDJLtZChWSOOKXDiizZCu7uZAixBmqP97HYUXkeg3lkTeeeyjmvhZBOZBibrp2Exa9uZAixBmqP97HYUXkeg3lkTeeeyjmvhZBOZBibrp2Exa9uZB7V5fflJTvISF2aqK94H7E52svqei6SHvxi3W9vcynSI8hPQBBSawND9NHQif0wYIPuHIpbzl6ErBErvk6nm4ysMo1ZA0BFHVmflVYZD&format=json&include_headers=false&sdk=ios,NSErrorFailingURLKey =(null)?access_token = EAAZAaT5Yj9qQBABsXA5KGpwvGX6wIdgX6h9mLtzz6YtgjiOB12XwWxl1MrDJLtZChWSOOKXDiizZCu7uZAixBmqP97HYUXkeg3lkTeeeyjmvhZBOZBibrp2Exa9uZB7V5fflJTvISF2aqK94H7E52svqei6SHvxi3W9vcynSI8hPQBBSawND9NHQif0wYIPuHIpbzl6ErBErvk6nm4ysMo1ZA0BFHVmflVYZD&format=json&include_headers=false&sdk=ios,NSLocalizedDescription =不支持的URL,NSUnderlyingError = 0x7a6285b0 {Error Domain = kCFErrorDomainCFNetwork Code = -1002“不支持的URL”UserInfo = {NSErrorFailingURLKey =(null)?access_token = EAAZAaT5Yj9qQBABsXA5KGpwvGX6wIdgX6h9mLtzz6YtgjiOB12XwWxl1MrDJLtZChWSOOKXDiizZCu7uZAixBmqP97HYUXkeg3lkTeeeyjmvhZBOZBibrp2Exa9uZB7V5fflJTvISF2aqK94H7E52svqei6SHvxi3W9vcynSI8hPQBBSawND9NHQif0wYIPuHIpbzl6ErBErvk6nm4ysMo1ZA0BFHVmflVYZD&format=json&include_headers=false&sdk=ios,NSErrorFailingURLStringKey =(null)?access_token = EAAZAaT5Yj9qQBABsXA5KGpwvGX6wIdgX6h9mLtzz6YtgjiOB12XwWxl1MrDJLtZChWSOOKXDiizZCu7uZAixBmqP97HYUXkeg3lkTeeeyjmvhZBOZBibrp2Exa9uZB7V5fflJTvISF2aqK94H7E52。

你想要做什么? - WizKid
你真正想要获取的是“朋友”还是“朋友列表”?这两者是有区别的。另外,你只能获取授权你的应用程序的朋友,API 调用为 /me/friends。 - andyrandy
2
/me/friendlists/friendlist-id 只会提供有关列表本身的信息(例如列表名称),而不会提供列表中的用户信息。 - CBroe
@luschn 它如何知道哪些朋友已经授权该应用程序? - Sente
因为这些是您通过 /me/friends 获取的好友。 - andyrandy
1个回答

11

@CBroe是正确的,这就是代码应该看起来的样子

let params = ["fields": "id, first_name, last_name, name, email, picture"]

let graphRequest = FBSDKGraphRequest(graphPath: "/me/friends", parameters: params)
let connection = FBSDKGraphRequestConnection()
connection.add(graphRequest, completionHandler: { (connection, result, error) in       
    if error == nil {
        if let userData = result as? [String:Any] {
            print(userData)
        }
    } else {
        print("Error Getting Friends \(error)");
    }

})

connection.start()

1
{ data = ( ); summary = { "total_count" = 235; }; } . 没有获取到列表 - Nandkishor mewara
2
我发现 **{ data = ( ); summary = { "total_count" = 235; }; }**。 - Nandkishor mewara
2
它只返回已经注册了你的应用程序的Facebook好友列表,而不是完整的列表。 - Luke Stanyer
@LukeStanyer 它如何知道哪些 Facebook 好友已经注册了这个应用程序? - Sente
Facebook会自动收集和跟踪这些信息。每个注册你的应用程序的人都会被添加到Facebook服务器上的用户列表中,并被分配一个唯一的用户ID,该ID将永远不会更改。 - Luke Stanyer
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接